为非IE内核游览器添加onmouseenter 和 onmouseleave事件
好像各大类库中jQuery是最后支持这两东东的,关于它们的优势可以参考reglib类库作者的一篇博文《Goodbye mouseover, hello mouseenter》。我们可以在IE观察下它的效果。
注意,我们在红色与蓝色之间移动,并没有触发outer元素的mouseenter事件。无错,它们与mouseover,mouseout最大的区别是它们不会冒泡。
下面试图用mouseover与mouseout模拟mouseenter与mouseleave。
function addEvent(el, type, handler, capture) { if ( typeof el.addEventListener != 'undefined' ) { if (type === 'mouseenter' ) { el.addEventListener( 'mouseover' , withinElement(handler), capture); } else if (type === 'mouseleave' ) { el.addEventListener( 'mouseout' , withinElement(handler), capture); } else { el.addEventListener(type, handler, capture); } } else if ( typeof el.attachEvent != 'undefined' ) { el.attachEvent( 'on' + type, handler); } else { el[ 'on' + type] = handler; } } function withinElement(handler) { return function (e) { var parent = e.relatedTarget; while ( parent && parent != this ) { try { parent = parent.parentNode; } catch (e) { break ; } } if ( parent != this ) handler.call( this , e); }; }; var $ = function (id){ return document.getElementById(id); } window.onload = function (){ function myFn(e){ e = e || window.event; var target = e.target ? e.target : e.srcElement; if (target.nodeType === 3){ target = target.parentNode; } $( 'memo' ).innerHTML = e.type + ': ' + target.id; }; addEvent($( "inner" ), "mouseenter" ,myFn, false ); addEvent($( "inner" ), "mouseleave" ,myFn, false ); addEvent($( "outer" ), "mouseenter" ,myFn, false ); } |
看看jQuery的实现,它用了一个冒牌事件对象,因此我们可以在FF中用e.type能打印出mouseenter,除此与上面没多大改善。
如果您觉得此文有帮助,可以打赏点钱给我支付宝1669866773@qq.com ,或扫描二维码


机器瞎学/数据掩埋/模式混淆/人工智障/深度遗忘/神经掉线/计算机幻觉/专注单身二十五年
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述