在js中,添加事件处理器有两种方式,一种是HTML形式,即在html代码中直接指定事件处理函数。第二种是在js中直接指定。我们现在要讨论的是在js中直接指定。
1:在Ie中,要为某个对象指定处理函数可以用attachEvent("onclick",function(){}这种形式。但这仅限于在IE当中使用。DOM标准的浏览器采用的是另外一种方法:addEventListener("click",function(){},false);前面两个参数很好理解,第三个bool型的参数表示该事件是否支持捕获型事件,false表示不支持,也就是表示他支持的是冒泡型的事件,即事件是自底向上上溯的。在Firefox浏览器中使用的就是addEventListener。我们还有一种更为通用的方法来给对象添加处理函数:obj.onclick = func1。这种方式默认就是采用的冒泡型的处理方式。看一段代码就明白了:
var func1 = function(el){
if(window.event){
var oEvent = window.event;
alert(oEvent.offsetX);
}else{
var oEvent = arguments[0];
alert(oEvent.pageX);
}
};
var func2 = function(){
if(window.event){
var oEvent = window.event;
var code = String.fromCharCode(oEvent.keyCode);
alert(code);
}else{
var oEvent = arguments[0];
var code = String.fromCharCode(oEvent.keyCode);
alert(code);
}
};
but1.onclick=func1;
but2.onkeyup=func2;
这种方式在IE和DOM标准的浏览器中都适用,建议采用这种方式。
2。在IE中,事件发生后会产生一个事件对象,该事件对象会保存在window.event下。所以,在IE中我们可以通过以下方式获得事件对象:
var oEvent = window.event;
而在DOM标准的浏览器中,事件是以另外一种方式获得的:var oEvent = arguments[0],或者直接将e当做参数传递给方法。例如:function test(e){e.clientX;}。因此在获取事件对象的时候得为IE单独考虑。
3. 事件对象包含有很多属性,其中就有一个clientX和clientY,它表示事件发生位置在浏览器中的坐标,不包括菜单栏和状态栏。在IE中还有一个offsetX和offsetY,它表示事件发生地相对于控件左上角的相对坐标。但它只在IE中有效,而且还存在几个像素的BUG。
4.键盘事件:如果是键盘事件,可以通过事件对象的属性获得相应的键值。window.event.keyCode。他返回的是键值的ascii码。但是ctrl,shift和alt键有专门的属性,分别为ctrlKey,shiftKey,altKey。他们都是bool型的,true表示按下了该键,false表示没有。
5.阻止事件的默认行为。浏览器中,有些事件有他的默认行为,例如oncontextmenu,他默认会弹出一个快捷菜单。但有时候我们可能不希望他出该菜单,例如,当我们想要禁止用户在文本框中复制和粘贴的时候就会需要阻止右键快捷菜单的他出。我们可以这么干:
var func2 = function(){
if(window.event){
var oEvent = window.event;
oEvent.returnValue = false;
}else{
var oEvent = arguments[0];
oEvent.preventDefault();
}
}
其中上一种做法仅限于IE,而第二种做法就支持DOM标准的浏览器,例如Firefox。
6.阻止事件冒泡。如果父元素和子元素都定义了同一个事件,那么在冒泡型事件模型中,事件会层层上溯。有时候我们可能想要阻止这种上溯行为,Javascript提供了相应的方法。在IE中我们可以这么写,window.event.cancelBubble = true;为true表示退出事件冒泡,事件将不再上溯。而在DOM标准的浏览器中,是用的另外一种方法:arguments[0].stopPropagation();
分享到:
相关推荐
javascript 中事件冒泡和事件捕获机制的详解 二者作用:描述事件触发时序问题 事件捕获:从document到触发事件的那个节点,即自上而下的去触发事件—由外到内 事件冒泡:自下而上的去触发事件—由内到外 绑定事件...
"javascript 讲义_01_事件结束"这个主题聚焦于JavaScript中的事件处理,特别是事件结束相关的概念。在这个讲义中,我们将深入探讨事件模型、事件冒泡、事件捕获以及如何正确地结束或清理事件。 事件是用户与网页...
js学习
事件绑定 示例代码JavaScript 事件处理 事件绑定 示例代码JavaScript 事件处理 事件绑定 示例代码JavaScript 事件处理 事件绑定 示例代码JavaScript 事件处理 事件绑定 示例代码JavaScript 事件处理 事件绑定 示例...
第6章 JavaScript中的事件与事件处理
JavaScript 事件是指 JavaScript 中与用户或浏览器交互时发生的事件处理,包括页面的装载、用户点击按钮等。JavaScript 事件可以分为三种类型:事件冒泡、事件捕获和 DOM 事件流。 事件流 事件流是指浏览器厂商...
JavaScript 事件机制是指浏览器中发生的各种事件,例如点击、鼠标悬停、键盘输入等,JavaScript 通过捕捉这些事件来执行相应的操作。本文将详细介绍 JavaScript 事件机制的实现方式和原理。 事件机制的实现方式有...
JavaScript 事件处理 常用事件(鼠标事件、键盘事件、表单事件)示例代码JavaScript 事件处理 常用事件(鼠标事件、键盘事件、表单事件)示例代码JavaScript 事件处理 常用事件(鼠标事件、键盘事件、表单事件)示例...
实验报告详细介绍了JavaScript事件处理的相关知识,这在Web开发中是非常关键的一部分,因为事件是用户与网页交互的主要方式。以下是对各个知识点的详细说明: 1. **JavaScript事件基本概念**: - **事件**:是用户...
在JavaScript中编写事件处理程序的基本语法是通过在元素的事件属性中指定JavaScript代码或调用函数。例如,('单击我!');"> 表示当按钮被点击时,会弹出提示框。 具体事件名包括: 1. onClick:鼠标单击时触发。 2...
实现JavaScript 动态加载事件
这篇博文“使用webview加载本地html页面,并处理html页面中的javascript事件”探讨了如何利用WebView来加载本地HTML文件,并且如何处理HTML页面中的JavaScript事件,这对于创建混合型应用或实现特定功能(如在原生...
Javascript_事件处理,讲解了JAVASCRIPT事件开发中注意的事项,步骤,有条理的讲解
事件被看作是JavaScript与网页之间交互的桥梁,当事件发生时,可以通过JavaScript 代码执行相关的操作。例如,用户可以通过鼠标拖曳登录框、改变登录框的显示位置、单击...今天我们就来学习JavaScript中事件处理机制。
在W3C规范出台之前,JavaScript事件机制在IE和Netscape浏览器中有两种不同的处理方式:冒泡和捕获。IE采用冒泡模型,事件从子元素向上冒泡到父元素;Netscape则采用捕获模型,事件从父元素向下捕获到子元素。W3C标准...
JavaScript 中的事件处理 JavaScript 提供了多种方式来处理事件,例如使用 HTML 属性指定事件处理器,或者使用 JavaScript 属性指定事件处理器。 使用 HTML 属性指定事件处理器的优点是简洁明了,但缺点是混合了 ...
JavaScript是Web开发中不可或缺的一部分,尤其在处理用户交互方面,事件和事件响应起...通过本文的讲解,希望你对JavaScript事件有了更深入的认识,能自如地在实际项目中应用这些技术,为用户提供更加丰富的交互体验。
JavaScript 事件处理 二级菜单级联 示例代码JavaScript 事件处理 二级菜单级联 示例代码JavaScript 事件处理 二级菜单级联 示例代码JavaScript 事件处理 二级菜单级联 示例代码JavaScript 事件处理 二级菜单级联 ...
JavaScript之DOM事件(源代码)JavaScript之DOM事件(源代码)JavaScript之DOM事件(源代码)JavaScript之DOM事件(源代码)JavaScript之DOM事件(源代码)JavaScript之DOM事件(源代码)JavaScript之DOM事件(源...
JavaScript 事件处理 下拉列表和可选项 示例代码JavaScript 事件处理 下拉列表和可选项 示例代码JavaScript 事件处理 下拉列表和可选项 示例代码JavaScript 事件处理 下拉列表和可选项 示例代码JavaScript 事件处理 ...