封装已知在IE中addEventListener 存在兼容问题需要通过attachEvent实现事件绑定 - 在window中IE环境下不存在addEventListener 而是attachEvent - attachEvent 使用 ```javascript el.attachEvent("on" + type, fn) ``` 请编写一个方法要求传入 type事件名 el 元素 fn事件回调函数来实现事件的绑定。 function( if(window){}else{ } )
时间: 2024-03-07 08:49:28 浏览: 106
可以按照以下方式进行封装:
```javascript
function bindEvent(type, el, fn) {
if (window.addEventListener) {
// 非IE浏览器
el.addEventListener(type, fn, false);
} else if (window.attachEvent) {
// IE浏览器
el.attachEvent("on" + type, function () {
fn.call(el, window.event);
});
}
}
```
使用时可以这样调用:
```javascript
var btn = document.getElementById("btn");
bindEvent("click", btn, function (event) {
console.log("按钮被点击了");
});
```
这样就可以实现兼容IE和非IE浏览器的事件绑定了。
相关问题
已知在IE中addEventListener 存在兼容问题需要通过attachEvent实现事件绑定
是的,addEventListener 在 IE8 及以下版本中存在兼容性问题,需要使用 attachEvent 来实现事件绑定。不过需要注意的是,attachEvent 绑定的事件会在全局作用域下执行,而不是在绑定元素的作用域下执行。同时,attachEvent 与 addEventListener 的参数也有所不同,例如绑定事件的名称需要加上 "on" 前缀,事件处理函数需要使用 window.event 对象来获取事件对象。
addEventListener attachEvent 区别
addEventListener和attachEvent是两种用于绑定事件处理程序的方法。它们之间的区别主要在于浏览器的兼容性和语法上的差异。
addEventListener是W3C标准的方法,用于向指定的元素添加事件侦听器。它使用语法为:element.addEventListener(event, function, useCapture)。其中event是事件的类型,function是事件触发时要执行的函数,useCapture是可选的,指定事件是在捕获阶段还是冒泡阶段进行处理。
attachEvent是IE浏览器特有的方法,用于向指定的元素添加事件处理程序。它使用语法为:element.attachEvent(event, function)。其中event是事件的类型,function是事件触发时要执行的函数。
总结起来,addEventListener是W3C标准的事件绑定方法,支持所有现代浏览器。而attachEvent是IE浏览器特有的方法,只能在IE浏览器中使用。
阅读全文