原生dom事件注册和移除事件的封装
var addEvent = (function() { var setListener; setListener = false; return function(el, ev, fn) { if (!setListener) { if (el.addEventListener) { setListener = function(el, ev, fn) { return el.addEventListener(ev, fn, false); }; } else if (el.attachEvent) { setListener = function(el, ev, fn) { return el.attachEvent(ev, fn, false); }; } else { setListener = function(el, ev, fn) { return el['on' + ev] = fn; }; } } return setListener(el, ev, fn); }; })(); var fireEvent = function(element, event) { var evt; if (doc.createEventObject) { return element.fireEvent('on' + event, evt); } else { evt = document.createEvent('HTMLEvents'); evt.initEvent(event, true, true); return !element.dispatchEvent(evt); } };
【推荐】2025 HarmonyOS 鸿蒙创新赛正式启动,百万大奖等你挑战
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】开源 Linux 服务器运维管理面板 1Panel V2 版本正式发布
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 复杂业务系统线上问题排查过程
· 通过抓包,深入揭秘MCP协议底层通信
· 记一次.NET MAUI项目中绑定Android库实现硬件控制的开发经历
· 糊涂啊!这个需求居然没想到用时间轮来解决
· 浅谈为什么我讨厌分布式事务
· 为大模型 MCP Code Interpreter 而生:C# Runner 开源发布
· Coze Studio:字节跳动 Coze 的开源版本来了!第一时间深度解析
· 面试时该如何做好自我介绍呢?附带介绍样板示例!!!
· 复杂业务系统线上问题排查过程
· 本可避免的P1事故:Nginx变更导致网关请求均响应400