window.addEventListener在IE8无法使用
时间: 2024-01-11 16:22:12 浏览: 154
在IE8中,`window.addEventListener`方法无法使用。相反,IE8使用`window.attachEvent`方法来添加事件监听器。下面是一个示例代码:
```javascript
if (document.all) {
window.attachEvent('onload', 函数名); // 在IE中添加事件监听器
} else {
window.addEventListener('load', 函数名, false); // 在非IE浏览器中添加事件监听器
}
```
请注意,`attachEvent`方法的语法略有不同,它需要在事件名称前加上"on"前缀。而`addEventListener`方法不需要加上"on"前缀。
相关问题
window.addEventListener 低版本浏览器加载
对于低版本的浏览器,可以采用以下方式来加载 `window.addEventListener`:
1. 使用条件注释:条件注释是一种只在特定版本的 Internet Explorer 浏览器中执行的特殊注释。可以将以下代码添加到页面的 `<head>` 标签中:
```html
<!--[if lt IE 9]>
<script src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js"></script>
<![endif]-->
```
2. 使用 polyfill 库:polyfill 是一种 JavaScript 库,可以在不支持某些新特性的浏览器中模拟这些特性。可以使用以下 polyfill 库来支持 `addEventListener`:
- polyfill.io:在页面的 `<head>` 标签中添加以下代码:
```html
<script src="https://polyfill.io/v3/polyfill.min.js?features=default"></script>
```
- es5-shim:在页面的 `<head>` 标签中添加以下代码:
```html
<script src="https://cdnjs.cloudflare.com/ajax/libs/es5-shim/4.5.10/es5-shim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/es5-shim/4.5.10/es5-sham.min.js"></script>
```
以上是两种常用的方法,可以根据需要选择适合的方式来为低版本的浏览器加载 `window.addEventListener`。
(function () { window.logid = "10395313006172470873"; loaded = 0; var addWindowEvent = window.addEventListener ? function(type, fn) { window.addEventListener(type, fn, false); } : function(type, fn) { window.attachEvent('on' + type, fn); }; addWindowEvent('beforeunload', function () { if (!loaded) { speed.mark('leave'); speed.send(); } }); addWindowEvent('load', function () { loaded = 1; }); })();
这段代码是一个匿名函数,用于统计页面的加载速度。函数内部定义了一个名为 logid 的全局变量,用于记录百度搜索的日志 ID。
函数内部还定义了两个函数,addWindowEvent 和 markTime。addWindowEvent 用于向 window 对象添加事件监听器,markTime 用于记录当前时间戳。其中,addWindowEvent 支持浏览器的标准事件监听方式和 IE 的事件监听方式。
函数内部还监听了页面的 beforeunload 和 load 事件。beforeunload 事件在页面关闭前触发,load 事件在页面加载完成后触发。在 beforeunload 事件中,函数会调用 speed.mark('leave') 和 speed.send() 方法,用于记录页面的离开时间并发送数据。
最后,这个匿名函数在定义后立即执行。
阅读全文