我们都知道,dom事件处理程序有两种类型:DOM0级和DOM2级,其中DOM0级在文档中调用onclick事件,这种方法比较繁琐,DOM2级使用addEventListener()和removeEventListener()两个方法处理事件,这种方法比较常见,但是,ie人家牛逼,IE中也有类似的两个方法:attachEvent()和detachEvent()。这两个方法接受相同的连个参数:事件处理程序,处理函数。 废话不多说,直接上代码:
一:attachEvent()用法。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <div id="divIe">你可以改变世界!</div> </body> <script type="text/javascript"> var divIe = document.getElementById('div3Ie'); divIe.attachEvent('onclick',function(){
console.log('bangbang'); }); </script> </html>
讯享网
二:attachEvent()和DOM0级和DOM2级方法的区别在哪?
- attachEvent()里面的第一个参数是onclick而不是和addEventListener()中的click一样;
- attachEvent()使用和使用DOM0级的区别主要在于事件处理程序的作用域。在使用DOM0级方法情况下,事件处理程序会在其所属的作用域内运行;在使用attachEvent()方法的情况下,事件处理程序会在全局作用域中运行,因此这里面的this相当于window。不过上面的程序我用Opera和chrome都不能测试成功,必须是ie浏览器才可以使用。例如:
讯享网<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <div id="btn">你可以改变世界!</div> </body> <script type="text/javascript"> var btn = document.getElementById('btn'); console.log(window.attachEvent); console.log(window.detachEvent); console.log(window.addEventListener); btn.attachEvent('onclick',function(){
console.log('bangbang'); console.log(this); //window }); </script> </html>
- 另外,还有一点不同的是,使用attachEvent()绑定多个事件的时候,和addEventListener()以相反的顺序触发:例如:
在上面的程序中加入:
btn.attachEvent('onclick',function(){
console.log('yanniu'); });
讯享网 function handler(){ alert('删除'); } btn.attachEvent('onclick',handler); btn.detachEvent('onclick',handler);

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/61478.html