封装已知在IE中addEventListener 存在兼容问题需要通过attachEvent实现事件绑定 - 在window中IE环境下不存在addEventListener 而是attachEvent - attachEvent 使用 ```javascript el.attachEvent("on" + type, fn) ``` 请编写一个方法要求传入 type事件名 el 元素 fn事件回调函数来实现事件的绑定。 function( if(window){}else{ } )
时间: 2024-03-07 22:49:28 浏览: 17
可以按照以下方式进行封装:
```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 对象来获取事件对象。
window.addEventListener在IE8无法使用
在IE8中,`window.addEventListener`方法无法使用。相反,IE8使用`window.attachEvent`方法来添加事件监听器。下面是一个示例代码:
```javascript
if (document.all) {
window.attachEvent('onload', 函数名); // 在IE中添加事件监听器
} else {
window.addEventListener('load', 函数名, false); // 在非IE浏览器中添加事件监听器
}
```
请注意,`attachEvent`方法的语法略有不同,它需要在事件名称前加上"on"前缀。而`addEventListener`方法不需要加上"on"前缀。