×

attachevent c is

attachevent(addEventListener和attachEvent的区别)

admin admin 发表于2022-09-05 23:24:57 浏览202 评论0

抢沙发发表评论

本文目录

addEventListener和attachEvent的区别


attachEvent——兼容:IE7、IE8;不兼容firefox、chrome、IE9、IE10、IE11、safari、opera
addEventListener——兼容:firefox、chrome、IE、safari、opera;不兼容IE7、IE8

attachEvent方法的作用


用于HTML内代码层和UI层分离。
比如,你要给一个按钮增加一个单击事件,你会怎么做?
《input type=“button“ id=“theBtn“ value=“点击“ onclick=“alert(’点击了一下’);“ /》
明显的,它破坏了标签,如果下次要修改这个按钮不小心就会丢失。
attachEvent是为了将事件分离,如:
《input type=“button“ id=“theBtn“ value=“点击“ /》
var theBtn = document.getElementById(“theBtn“); //取得ID为theBtn的按钮
theBtn.attachEvent(“onclick“, buttonClicked); //给按钮增加事件
function buttonClicked(e){ alert(“点击了一下“); } //定义函数
attachEvent用法:
attachEvent(事件类型, 处理函数);
P.S.:在Firefox中,对应的函数是addEventListener(事件类型, 处理函数, 使用捕获);
在简单的HTML应用中可能用不用效果不明显,但是在复杂的HTML客户端JS代码内,优势就体现出来了。

attachEvent在w3school搜不到


attachEvent是IE的标准,不是W3C的标准,该方法IE浏览器支持。W3C提出绑定事件的方法是addEventListener,W3C提出的方法在非IE浏览器中支持!
所以,在W3C的文档中是没有attachEvent的!
-is

对象不支持attachevent怎么解决


1、打开游览器点击右上角的”工具“选项,会出现一个对话框。

2、在出来的对话框里面,点击“Internet 选项”用来打开设置选项。

3、然后在跳出了的Internet选项设置页面中点击“安全”,然后点击“点击“默认级别”。

4、点击“默认级别”按下图进行设置。

5、然后重新切换到“高级”选项卡中,将“禁用脚本调试(Internet Explorer)”和“禁用脚本调试(其他)”前面两项打上勾。

6、打钩即可。


对象不支持“attachEvent”属性或方法怎么处理


ie 11 移除了该方法
另外一个要废弃的是 attachEvent() 方法,该方法用于添加事件处理器,对应的 detachEvent() 用来移除事件处理器。这两个方法将在 Internet Explorer 11 中删除。移除这两个方法需要改用如下逻辑:
view sourceprint?
1 function addEvent(element, type, handler) {
2 if (element.attachEvent) {
3 element.attachEvent(“on“ + type, handler);
4 } else if (element.addEventListener) {
5 element.addEventListener(type, handler, false);
6 }
7 }
-c

addEventListener和attachEvent以及element.onclick的区别


attachEvent是ie添加事件处理程序,接收两个参数,其中事件类型名称要加“on“,
可以添加多个事件处理程序,按照添加顺序相反的顺序触发;
addEventListener是给非ie添加事件处理程序,接收三个参数,第一个是事件名,不需要加“on”,
第二个是绑定的函数,第三个参数是一个布尔值,是事件的方式,意思是是否使用useCatch方式,
如果是false,就使用传统的冒泡方式,如果为true,就在捕获阶段调用事件处理程序。
addEventListener可以添加多个事件处理程序,按照添加顺序触发
二者有个本质上的区别,attachEvent的事件处理程序会在全局作用域中运行,this等于window对象,
而addEventLinstener添加的事件处理程序是在其依附的元素的作用域中运行的,this等于绑定元素对象。
-is

关于js中使用attachEvent函数注册的处理程序中的this值


    //这是IE下的一个著名的bug
    //绑定事件想解决this的指向问题,请用下边的自定义方法,事件处理方法中this始终指向目标元素
    var addEvent = (function(){
        if( d.addEventListener ){
            return function(el, type, fn){
                var _len = el.length;
                if( _len ){
                    for(var i=0; i《_len; i++){
                        addEvent(el[i], type, fn);
                    }   
                }else{
                    el.addEventListener(type, fn, false);
                }   
            };  
        }else if( d.attachEvent ){
            return function(el, type, fn){
                var _len = el.length;
                if( _len ){
                    for(var i=0; i《_len; i++){
                        addEvent(el[i], type, fn);
                    }   
                }else{
                    el.attachEvent(’on’ + type, function(){
                        return fn.call(el, w.event);
                    }); 
                }   
            };  
        }   
    })();
-c