要做一个工作,需要页面上的控件事件,由自己做的BHO程序来进行响应。想想这么简单的事情,不需要多说什么。几个新来的员工就是死活理解不了,费了好大的劲才让他们稍有理解,让他们按照要求、规范编写程序就可以了。
其实页面上的一个按钮、一个输入框,也就是一个窗口(如果按照C++界面编程来讲),也是会发出消息、会相应消息的。
按照Windows的消息机制来讲,页面上的一个按钮,是一个窗口,有自己的消息循环、消息处理,如果自己没有处理,应该会把消息传递给父窗口,直到最顶层的窗口。
按照上述的描述,应该这么理解:
点击了页面上的一个按钮,这个按钮会发出Click的消息
如果是这个窗口自己进行的处理,就是在页面上<input type="button" ... > 中, 设置了onClick事件处理,这个应该在浏览器加载页面的时候,分析html代码,自动的把onClick代码挂到这个button的窗口消息处理循环上;
如果在<input /> 中没有设置,这个click消息应该是向父窗口进行传递,这个使用应该是document(或者是windows)窗口,也可以在这个里面进行处理
如果在document中也没有处理,则应该是加载这个页面的浏览器窗口进行处理,在写C++程序自己截获浏览器消息的时候,就可以扩充Browser窗口的消息处理,这个机制应该就和BHO一样的了。
-------------------------------------------------------------
还有:在页面上的一个按钮,如果类似点击行为发生后,对于这个按钮,或者说对于Windows的窗口来讲,只是发出了一个Message,这个Message进入到Windows的消息循环队列中。
至于这个Message是有哪段代码进行处理,这群家伙理解不了,都在想页面里没有写onClick,怎么会处理这个消息,这个按钮的onClick怎么会由BHO程序进行处理。为了解释这一点费了好大的力气。讲了几次算了,不再做过多的解释了,让他们按照要求做就可以了。
-----------------------------------------------------------------
其他的一些参考资料:
Javascript事件处理代码的三种写法
1.作为HTML属性值的事件处理程序
HTML代码
<input name="btn" type="button" id="btn" value="按钮" onclick="alert('mzwu.com');" />
2.作为JavaScript属性的事件处理程序
HTML代码
<input name="btn" type="button" id="btn" value="按钮" />
<script language="javascript">
document.getElementById("btn").onclick = function(){alert("mzwu.com");}
</script>
说明:可能受第一种方法的误导,你会觉得应该写成:document.getElementById("btn").onclick() = "alert('mzwu.com');",这样写是错误的!其实第一种方法隐式的创建了一个函数,使用下边代码可以说明这一点,因为它检测出HTML属性值其实是一个函数:
HTML代码
<input name="btn" type="button" id="btn" value="按钮" onclick="alert(typeof(this.onclick));" />
上边是用直接量来创建函数,改成用function()语句的写法:
HTML代码
<input name="btn" type="button" id="btn" value="按钮" />
<script language="javascript">
function e()
{
alert("mzwu.com");
}
document.getElementById("btn").onclick = e;
</script>
由此我们可引申出第三种方法。 网页教学网
3.第三种方法
HTML代码
<input name="btn" type="button" id="btn" value="按钮" />
<script language="javascript">
function document.all.btn.onclick()
{
alert("mzwu.com");
}
</script>
说明:诸如此类的方法还有function document.onclick(){},但这种方法在IE、FF中测试只有IE下可行,再改成function document.getElementById("btn").onclick(){}在IE、FF下都不行了,提示缺少标识符,其实这也不难解释,因为JavaScript标识符中本来就不允许出现点号,用document.getElementById("btn").onclick做标识符显然是错误的,但document.all.btn.onclick却又可以实在有点让人费解。
------------------------------------------------------------------------------
javascript事件处理机制——容易被我们遗忘的细节问题
讲述了IE和Netscape之间的一些区别,以及各种事件模型
JavaScript 事件处理
分享到:
相关推荐
深入理解JavaScript系列(1):编写高质量JavaScript代码的基本要点 深入理解JavaScript系列(2):揭秘命名函数表达式 深入理解JavaScript系列(3):全面解析Module模式 深入理解JavaScript系列(4):立即调用...
深入理解JavaScript深入理解JavaScript深入理解JavaScript
深入理解JavaScript系列(1):编写高质量JavaScript代码的基本要点 深入理解JavaScript系列(2):揭秘命名函数表达式 深入理解JavaScript系列(3):全面解析Module模式 深入理解JavaScript系列(4):立即调用...
"WEB页编程技巧──JavaScript事件的应用.pdf" 本文档主要介绍了...本文档对JavaScript事件和事件驱动编程进行了详细的介绍,并提供了WEB页编程示例,以帮助读者更好地理解和应用JavaScript事件驱动编程技术。
深入理解Javascript系列
在这个压缩包中,"扣代码工具"可能是一个用于理解和调试JavaScript事件处理的工具,特别关注事件捕获阶段。事件捕获是从最外层元素(文档)开始,逐级向下传递到目标元素的过程,这使得在元素树的更高级别可以处理...
深入理解JavaScript系列(1):编写高质量JavaScript代码的基本要点 深入理解JavaScript系列(2):揭秘命名函数表达式 深入理解JavaScript系列(3):全面解析Module模式 深入理解JavaScript系列(4):立即调用...
总结来说,JavaScript事件是其动态特性的核心,而事件捕获和冒泡则是理解事件处理机制的关键。通过合理利用这两种机制,开发者可以创建出更加互动和响应式的网页应用。了解并熟练运用这些知识,将有助于提升...
首先,我们需要理解什么是JavaScript事件。事件是用户或浏览器在与网页交互时发生的特定情况,比如点击按钮、提交表单或者滚动页面等。这些事件触发后,可以执行相应的代码,这就是事件处理。 在JavaScript中,事件...
此外,本书还会讲解JavaScript的异步编程,包括事件循环、回调函数、Promise以及现代的async/await语法,这些都是编写非阻塞代码、处理异步操作的关键技术。 最后,随着JavaScript的发展,ES6(ECMAScript 2015)...
通过本文的介绍,你应该对如何在JavaScript中创建和使用自定义事件有了深入的理解。记住,合理地使用自定义事件可以显著提升你的Web应用程序的交互性和可维护性。 通过本文的介绍,你应该对如何在JavaScript中创建...
JavaScript事件是Web开发中不...总的来说,JavaScript事件是构建动态网页的核心,理解并熟练掌握事件处理机制能够提升用户体验,使网页更加生动和交互。通过学习和实践,开发者可以创建出更加智能和用户友好的Web应用。
JavaScript事件捕获机制是理解JavaScript事件处理模型的关键部分,它允许我们对页面上的元素进行响应,例如点击、鼠标移动或者键盘输入等。下面将详细阐述这两个主题。 首先,网页模板是一种预先设计的网页结构,...
首先,我们要理解JavaScript事件。JavaScript是一种运行在客户端浏览器上的脚本语言,它能监听用户行为和页面状态的变化,然后触发相应的函数。在TextBox中,两个关键的事件是`focus`和`blur`。 1. `focus`事件:当...
在ASP.NET框架中,JavaScript事件绑定是将客户端脚本与服务器端控件相结合,以实现动态交互和优化用户体验的关键技术。尽管ASP.NET提供了丰富的服务器端功能,但JavaScript在处理页面上的实时交互和验证等方面具有...
深入理解javascript原型和闭包(01)——一切都是对象 深入理解javascript原型和闭包(02)——函数和对象的关系
理解事件循环机制和事件委托策略,能有效提高性能并避免回调地狱。 此外,JavaScript的异步编程模型,如Promise和async/await,是现代JavaScript开发不可或缺的部分。它们用于处理非阻塞I/O操作,使得代码更加线性...
理解事件处理程序(addEventListener、removeEventListener)以及事件对象的使用,能够创建响应用户行为的动态效果。 6. **AJAX**:Asynchronous JavaScript and XML,虽然现代更多地使用Fetch API,但理解其原理...