700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > JavaScript dom事件对象和IE事件对象实例详解

JavaScript dom事件对象和IE事件对象实例详解

时间:2021-11-13 18:31:37

相关推荐

JavaScript dom事件对象和IE事件对象实例详解

web前端|js教程

JavaScript,ie,js

web前端-js教程

事件对象:在触发DOM上的某个事件时,会产生一个事件对象event,这个对象中包含着所有与事件有关的信息,包括导致事件的元素、事件的类型以及其他与特定事件相关的信息。

卡盟整套系统源码,vscode设置c调试环境,ubuntu 下载pcl,tomcat查看配置成功,爬虫401解决,php访问全局变量,江苏seo推广排名优化,周公解梦网站模板,dede 模板失效lzw

DOM中的事件对象

语音合成 源码,ubuntu 程序设计,tomcat6.5官方下载,爬虫隐藏链接,php怎么套模板,合肥百度关键词seo公司收费lzw

兼容DOM的浏览器会将一个event对象传入事件处理程序中,无论指定事件处理程序时用的是DOM0还是DOM2的方法,都会传入event对象。event对象只有在事件处理程序执行期间才会存在,一旦事件处理程序执行完毕,event对象就会被销毁。下面是代码示例:

手机网页聊天源码,vscode写生日代码,ubuntu热门软件,tomcat没显示8080,sqlite3C语言API,春季阳台种菜怎么杀土里的爬虫,php引入类,济宁正规seo优化行业,支付宝的网站支付demo,日本 模板下载 迅雷下载lzw

var btn = document.getElementById("myBtn");btn.onclick = function(event) { console.log(event.type); // "click"}btn.addEventListener("click", function(event) { console.log(event.type);}, false);

event对象包含与创建它的特定事件有关的属性和方法,触发的事件类型不一样,可用的属性方法也有所不同。但是所有的事件都会有下列的属性或方法:

bubbles: 布尔值,表示事件是否冒泡

cancelable: 布尔值,表示是否可以取消事件的默认行为

currentTarget: 元素,事件处理程序当前正在处理事件的那个元素

defaultPrevented: 布尔值,表示是否调用过preventDefault()方法

detail: 整数,与事件相关的细节信息

eventPhase: 整数,调用事件处理程序的阶段,1表示捕获阶段,2表示目标阶段,3表示冒泡阶段

preventDefault(): 函数,取消事件的默认行为,cancelable为true时可以调用该方法

stopImmediatePropagation(): 函数,取消事件的进一步捕获或冒泡,同时阻止任何事件处理程序被调用

stopPropagation(): 函数,取消事件的进一步捕获或冒泡,bubbles为true时可以调用这个方法

target: 元素,事件的目标

trusted: 布尔值,为true时表示事件是浏览器生成的,否则表示事件是通过JS创建的

type: 字符串,被触发的事件类型

view: 与事件关联的抽象视图,等同于发生事件的window对象

下面代码示例展示了上述部分属性的用法,也可以帮助我们进一步理解事件流。假设页面中有一个按钮”myBtn”。当点击按钮时,this和currentTarget都等于body元素,因为事件处理程序是注册在body元素上。target的值却等于按钮元素,因为它是click事件的真正目标。由于按钮上没有注册事件处理程序,结果”click”事件冒泡到了document.body那里才得到处理。

document.body.onclick = function(event) { console.log(event.currentTarget === document.body); // true console.log(this === document.body); // true console.log(event.target === document.getElementById("myBtn")); // true};

再看一个例子,下面代码中,stopPropagation()方法取消了事件的进一步捕获或冒泡。当我点击按钮时,本来应该会因为事件冒泡机制触发按钮和body元素上的点击事件处理程序,输出”From Bth …”和”From Body …”。现在点击事件在按钮元素上触发之后就被阻止继续在DOM层次中的传播,因此body上的事件处理程序不会被触发。

var btn = document.getElementById("myBtn");btn.onclick = function(event) { console.log("From Bth ..."); event.stopPropagation(); // 停止事件传播};document.body.onclick = function() { console.log("From Body ...");};

IE中的事件对象

在IE中,使用DOM0的方法添加事件处理程序时,event对象作为window对象的一个属性存在。如果是通过attachEvent()方法添加,则event对象是作为参数传入事件处理函数。下面是代码示例:

var btn = document.getElementById("myBtn");btn.onclick = function() { var event = window.event; console.log(event.type); // "click"};btn.attachEvent("onclick", function(event) { console.log(event.type); // "click"});

IE的event对象同样也包含与创建它的事件相关的属性和方法,这些属性和方法也会因为事件类型的不同而有所差异。但所有事件对象都会包含下列属性:

cancelBubble: 布尔值,可读可写,默认为false。将其设置为true时取消事件冒泡

returnValue: 布尔值,可读可写,默认为true。将其设置为false时取消事件的默认行为

srcElment: 元素,事件的目标元素,与DOM中的target属性相同

type: 字符串,事件类型

在IE中,事件处理程序的作用域是根据指定它的方式来确定,this的值不一定是指向事件的目标元素。因此,使用srcElement属性更具保险。请看下面代码实例,第一种方式中this的值为目标元素,而第二种方式,前面讲过这种方式的事件处理程序是在全局作用域中执行,因此this的值为window。

var btn = document.getElementById("myBtn");btn.onclick = function() { console.log(window.event.srcElement === this); // true}btn.attachEvent("onclick", function(event) { console.log(event.srcElement === this); // false});

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。