JavaScript封装一个注册函数解决兼容问题

news/2024/7/1 4:39:00

我们知道JavaScript注册(绑定)事件主要有两类方式,第一类传统方式具有注册事件的唯一性,即对于同一元素的同一事件,不会出现两个处理函数,如下

    var btn = document.querySelector('button');btn.onclick = function(){document.body.style.backgroundColor = "yellow";}

第二类没有唯一性限制,具体有两种做法,其中addEventListener方法需要ie9以上浏览器支持,例如

    function handle(){document.body.style.backgroundColor = "yellow";}btn.addEventListener('click',handle);

另一种attachEvent需要ie9以前的浏览器支持,例如

    function handle(){document.body.style.backgroundColor = "yellow";}btn.attachEvent('onclick',handle);

兼容性处理原则是:首先照顾大多数浏览器,再处理特殊浏览器

然后又不希望被注册事件的唯一性限制住

因此,优先级是addEventListener>attachEvent>传统方式

    function addEventListener(element,eventName,handleFn){if(element.addEventListener){element.addEventListener(eventName,handleFn);}else if(element.attachEvent){element.attachEvent('on'+eventName,handleFn);}else{element['on'+eventName] = handleFn;}}


http://lihuaxi.xjx100.cn/news/240785.html

相关文章

排序(一)归并、快排、优先队列等(图文具体解释)

排序(一) 0基础排序算法 选择排序 思想:首先,找到数组中最小的那个元素。其次,将它和数组的第一个元素交换位置。再次。在剩下的元素中找到最小的元素。将它与数组的第二个元素交换位置。如此往复,直到将整个数组排序。 【图例】 …

练习 MongoDB 操作 —— 备份篇(三)

2019独角兽企业重金招聘Python工程师标准>>> mongodb数据备份和还原主要分为二种, 一种是针对于库的mongodump和mongorestore, 一种是针对库中表的mongoexport和mongoimport。 mongodb 数据库操作--备份 还原 导出 导入 导入与导入 导入与导出…

RabbitMQ死信队列、延时队列

介绍: 消息被消费⽅否定确认,使⽤ channel.basicNack 或 channel.basicReject ,并且此时 requeue 属性被设置为 false 。消息在队列的存活时间超过设置的TTL时间。消息队列的消息数量已经超过最⼤队列⻓度。那么该消息将成为“死信”。“死信…

JavaScript实现智能搜索框

应用场景: 1. 搜索框在页面中占据的空间过小,希望无论浏览到什么位置,可以轻易地回到并聚焦搜索框。 2. 搜索框里面的文字大小过小,希望能够在上方开辟一块空间放大内容 解决思路: 1. 对整个页面添加键盘事件keyup…

phpstorm failed to create jvm:error code -6 解决办法 解决方法

phpStorm 软件打开运行提示 failed to create JVM的解决办法。 修改文件 D:\Program Files (x86)\JetBrains\PhpStorm 7.1.3\bin\PhpStorm.exe.vmoptions 把内存值改成标准值,文件全部内容如下: [plain] view plaincopy -server -Xms128m -Xmx512m -X…

CentOS 6.x中目录结构及用途

目录名称作用/根目录,一般根目录下只存放目录,不要存放文件/bin存放普通用户可执行的系统命令/sbin存放的是超级管理员执行的系统命令/etc系统管理和配置文件存放路径/etc/rc.d启动的配置文件和脚本存放目录/etc/passwd系统用户密码文件,包含…

JavaScript实时更新中国标准时间

用到Date对象和BOM中的setInterval()定时器。 效果如下&#xff08;每隔1s刷新一次&#xff09; 代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content&q…

RMQ算法

一.概述 RMQ&#xff08;Range Minimum/Maximum Query&#xff09;&#xff0c;即区间最值查询&#xff0c;是指这样一个问题&#xff1a;对于长度为n的数列A&#xff0c;回答若干询问RMQ&#xff08;A,i,j&#xff09;(i,j<n)&#xff0c;返回数列A中下标在i&#xff0c;j…