惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
T
The Blog of Author Tim Ferriss
博客园 - 司徒正美
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
有赞技术团队
有赞技术团队
量子位
S
SegmentFault 最新的问题
博客园 - 聂微东
博客园 - 【当耐特】
J
Java Code Geeks
美团技术团队
Hugging Face - Blog
Hugging Face - Blog
H
Help Net Security
V
V2EX
人人都是产品经理
人人都是产品经理
博客园 - Franky
罗磊的独立博客
Engineering at Meta
Engineering at Meta
A
About on SuperTechFans
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
酷 壳 – CoolShell
酷 壳 – CoolShell
云风的 BLOG
云风的 BLOG
Y
Y Combinator Blog
Apple Machine Learning Research
Apple Machine Learning Research

博客园 - 前端架构师

DSH 插件第二弹生态全景:11 个插件,把 DeepSeek 变成一个完整的 Coding Agent 平台 DSH 插件推荐清单:DeepSeek Harness 必装的 14 个插件 手摸手教你做一个codex桌面宠物 告别信息碎片化!我把 Claude Code、Cursor、MCP 和 Vibe Coding 整理成了一座全能 AI 宝库(建议收藏) Claude Code 源码架构分析 我不是狐狸,我是那Harness Engineering 小龙虾的自我养成之路 vue3+ts添加公共富文本组件 vue watch详解 微信授权没搞过? css3图片防止变形 公众号使用微信sdk的正确姿势 web离线应用前提之离线检测 es6手写一个call 同学给我来个手写的new吧 this综合篇 this绑定番外篇之箭头函数绑定 vue中引入公用过滤器? this详解下 012天this详解上 011天之跨域资源共享CORS 010天JSON.stringify()详解 使用XHR上传文件要不要了解一下?
009天之跨浏览器的事件处理程序
前端架构师 · 2020-03-22 · via 博客园 - 前端架构师

为了以️跨浏览器方式处理事件,我们可以使用一些可以隔离浏览器差异的js库。由于业务需求,有时候我们需要写一些我们自己封装一些兼容代码。

比如创建一个addHandler(),它的职责是视情况分别使用DOM0级方法,DOM2级方法或IE方法来添加事件。然后addHandler()方法接受三个参数:要操作的元素,事件名称,和事件处理程序函数。

与addHandler();对应的方法是removeHandler(),它也接受同样的参数,这个的职责是移除之前添加的事件处理程序。无论这个事件是采取什么方式添加到元素中,如果其他方法无效,默认采取DOM0级方法。

let EventUtil = {
    addHandler: function(element, type, handler) {
        if(element.addEventListener) {
            element.addEventListener(type, handler, false)
        } else if(element.attachEvent) {
            element.attchEvent("on" + type, handler)
        } else {
            element["on" + type] = handler
        }
    },
    removeHandler: function(element, type, handler) {
        if(element.removeEventListener) {
            element.removeEventListener(type,handler,false)
        } else if(element.detachEvent) {
            element.detachEvent("on" + type, handler);
        } else {
            element["on" + type] = null;
        }
    }
}



//调用时候

let btn = document.getElementById('myBtn');

let handler = function() {
    console.log("你的代码改变世界!")
}

EventUtil.addHandler(btn, "click",handler);

//其他代码

EventUtil.removeHandler(btn,'click',handler);

扫码加群,每日更新一篇前端技术文章一起成长。