`
zybing
  • 浏览: 457115 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

对JavaScript事件的理解

阅读更多

 

要做一个工作,需要页面上的控件事件,由自己做的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系列

    深入理解JavaScript系列(1):编写高质量JavaScript代码的基本要点 深入理解JavaScript系列(2):揭秘命名函数表达式 深入理解JavaScript系列(3):全面解析Module模式 深入理解JavaScript系列(4):立即调用...

    深入理解JavaScript 5分

    深入理解JavaScript深入理解JavaScript深入理解JavaScript

    深入理解JavaScript系列(.chm)

    深入理解JavaScript系列(1):编写高质量JavaScript代码的基本要点 深入理解JavaScript系列(2):揭秘命名函数表达式 深入理解JavaScript系列(3):全面解析Module模式 深入理解JavaScript系列(4):立即调用...

    WEB页编程技巧──JavaScript事件的应用.pdf

    "WEB页编程技巧──JavaScript事件的应用.pdf" 本文档主要介绍了...本文档对JavaScript事件和事件驱动编程进行了详细的介绍,并提供了WEB页编程示例,以帮助读者更好地理解和应用JavaScript事件驱动编程技术。

    深入理解Javascript系列

    深入理解Javascript系列

    扣代码工具 javascript事件 捕获者2.0.zip

    在这个压缩包中,"扣代码工具"可能是一个用于理解和调试JavaScript事件处理的工具,特别关注事件捕获阶段。事件捕获是从最外层元素(文档)开始,逐级向下传递到目标元素的过程,这使得在元素树的更高级别可以处理...

    深入理解JavaScript系列(汤姆大叔)

    深入理解JavaScript系列(1):编写高质量JavaScript代码的基本要点 深入理解JavaScript系列(2):揭秘命名函数表达式 深入理解JavaScript系列(3):全面解析Module模式 深入理解JavaScript系列(4):立即调用...

    简析JavaScript事件、以及捕获和冒泡

    总结来说,JavaScript事件是其动态特性的核心,而事件捕获和冒泡则是理解事件处理机制的关键。通过合理利用这两种机制,开发者可以创建出更加互动和响应式的网页应用。了解并熟练运用这些知识,将有助于提升...

    550836 深入理解JavaScript [(美)罗彻麦尔著]_jvascript_

    此外,本书还会讲解JavaScript的异步编程,包括事件循环、回调函数、Promise以及现代的async/await语法,这些都是编写非阻塞代码、处理异步操作的关键技术。 最后,随着JavaScript的发展,ES6(ECMAScript 2015)...

    Simply JavaScript, JavaScript Beginning

    "Simply JavaScript" 作为一本JavaScript的初级教程,旨在帮助读者从零开始,逐步建立起对JavaScript语言的理解。书中可能涵盖了变量、数据类型、运算符、流程控制(如条件语句和循环)、函数、对象和数组等基础概念...

    JavaScript自定义事件的创建与应用:深入指南

    通过本文的介绍,你应该对如何在JavaScript中创建和使用自定义事件有了深入的理解。记住,合理地使用自定义事件可以显著提升你的Web应用程序的交互性和可维护性。 通过本文的介绍,你应该对如何在JavaScript中创建...

    JavaScript事件

    JavaScript事件是Web开发中不...总的来说,JavaScript事件是构建动态网页的核心,理解并熟练掌握事件处理机制能够提升用户体验,使网页更加生动和交互。通过学习和实践,开发者可以创建出更加智能和用户友好的Web应用。

    网页模板——扣代码工具 javascript事件 捕获者2.0.zip

    JavaScript事件捕获机制是理解JavaScript事件处理模型的关键部分,它允许我们对页面上的元素进行响应,例如点击、鼠标移动或者键盘输入等。下面将详细阐述这两个主题。 首先,网页模板是一种预先设计的网页结构,...

    asp.net中TextBox获得焦点和失去焦点——客户端JavaScript事件

    首先,我们要理解JavaScript事件。JavaScript是一种运行在客户端浏览器上的脚本语言,它能监听用户行为和页面状态的变化,然后触发相应的函数。在TextBox中,两个关键的事件是`focus`和`blur`。 1. `focus`事件:当...

    深入理解JavaScript(美)罗彻麦尔著.pdf

    深入理解JavaScript(美)罗彻麦尔著.pdf

    将JavaScript事件绑定到ASP.NET对象

    在ASP.NET框架中,JavaScript事件绑定是将客户端脚本与服务器端控件相结合,以实现动态交互和优化用户体验的关键技术。尽管ASP.NET提供了丰富的服务器端功能,但JavaScript在处理页面上的实时交互和验证等方面具有...

    深入理解javascript原型和闭包

    深入理解javascript原型和闭包(01)——一切都是对象 深入理解javascript原型和闭包(02)——函数和对象的关系

Global site tag (gtag.js) - Google Analytics