博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js window 事件
阅读量:5908 次
发布时间:2019-06-19

本文共 1469 字,大约阅读时间需要 4 分钟。

 window.onXX这个,在w3c规范中有专门的定义,叫DOM第0级事件模型。在当今所有的浏览器中都有实现。但是缺点是,只能绑定一个事件处理函数。且不具备多事件排程绑定的功能

addEventListener。在w3c标准中,叫DOM第2级事件模型。用来弥补window.onXX的不足。但是ie不支持,IE的多重事件绑 定方法是attachEvent。特别要说一下,attachEvent和addEventListener实现的功能并非是完全一样的。不同点如下:
1.attachEvent不支持捕获阶段,只支持冒泡阶段,而addEventListener可以通过最后一个参数设定
2.attachEvent在ie6(可能7上也有)在设置了handler function之后,在function内部调用this,并不能正确指向调用对象,而是直接指向了window。
所以一般绑定事件,如果要支持全浏览器,且不用绑定多个handler,建议用DOM第0级事件模型
如果要支持全浏览器,且需要绑定多个handler,不使用捕获阶段,可以用DOM第2级事件模型+attachEvent。
参考代码如下:

function addEventListener(control, eventName, fn) {    if (window.attachEvent) {        // 解决IE attachEvent this指向window对象的Bug        control.attachEvent('on' + eventName, function(e) {fn.call(control, e);});    } else if (window.addEventListener) {        control.addEventListener(eventName, fn, false);    } else {        control['on' + eventName] = fn;    }}

 

addEventListener = function() {    if (window.attachEvent) {        return function(control, eventName, fn) {            // 解决IE attachEvent this指向window对象的Bug            control.attachEvent('on' + eventName, function(e) {fn.call(control, e);});        };    } else if (window.addEventListener) {        return function(control, eventName, fn) {            control.addEventListener(eventName, fn, false);        };    } else {        return function(control, eventName, fn) {            control['on' + eventName] = fn;        };    }};

 

 

转载于:https://www.cnblogs.com/chris-oil/archive/2013/04/19/3030640.html

你可能感兴趣的文章
tomcat注册windows服务
查看>>
使用qq邮箱的smpt服务发送邮件一定要记得用ssl
查看>>
20个非常有用的Java代码片段
查看>>
网站优化和竞价有什么区别
查看>>
MySQL开源热备工具XtraBackup的原理与程序说明
查看>>
mongoDB(1):windows下安装mongoDB(解压缩版)
查看>>
CentOS修改主机名
查看>>
php 5.3.6中php-fpm 配置
查看>>
XMPP协议分析-原理篇
查看>>
centos7常用操作
查看>>
系统集成资质培训 - 新书发布
查看>>
Ubuntu解决RTNETLINK answers: File exists
查看>>
ES6数组去重的最佳实践:Set结合Array.from() | 拓展运算符结合 Set
查看>>
深入屏幕像素概念
查看>>
awk命令的几个选项注释
查看>>
Windows更改临时文件夹
查看>>
iRedMail调整附件大小 & Postfix的bcc(自动转发/邮件备份/监控/归档) 在同一个服务器是有压力...
查看>>
唯识相链由来
查看>>
linux系统的负载与CPU、内存、硬盘、用户数监控shell脚本
查看>>
Percona Toolkit 安装
查看>>