博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
非IE浏览器实现onmouseenter
阅读量:7050 次
发布时间:2019-06-28

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

每次遇到onmouseover事件的处理就头疼。比如父标签A里面嵌套了两个子标签,分别为标签A1和A2。假设你在父标签A上绑定了mouseover事件,理想的状态应该是:当鼠标从A标签外移到A标签上,事件触发。

但实际情况是,在以下几种情况下,mouseover事件都会被触发,下图为mouseover事件触发示意图(mouseout事件类似)。

  1. 当鼠标从A标签外移到A标签上。
  2. 当鼠标从父标签A移入子标签B(或C)。
  3. 当鼠标从子标签B移入子标签C(假设间距足够小的话)。

mouseover事件触发示意图

之前一直是通过在事件处理函数里面判断触发当前时间的targe是否指定节点来解决上面问题,问题是,当标签嵌套层次比较多的时候,这个判断过程就变得很麻烦,还会让处理函数里面多处一堆跟逻辑不相关的代码。

请教了某同事,IE浏览器支持mouseenter事件,可以轻松搞定以上问题,刚好现在手头做的东西也是只需要支持IE浏览器(\ (^o^)/)。然后就想了,如果突然需求变更说要支持其他非IE浏览器了,那不就惨了(这也是很有可能发生的),像firefox、chrome都是不 支持mouseenter的。那就只能自己试着去模拟下了:

   
在非IE浏览器里模拟mouseenter、mouseleave事件

在firefox和IE 8里简单测试了下,顺利运行,搞定!

以上只是简单地在非IE浏览器里模拟了mouseenter和mouseleave事件,只是实验下,代码写的有点挫各种见谅,主要的是实现的原理。

文章参考了另一篇博文:,写得不错,就是不知道为什么下面的“运行代码”一直没反应。

转载地址:http://chvol.baihongyu.com/

你可能感兴趣的文章
接口自动化:pytest----环境搭建
查看>>
团队编程项目开发环境搭建过程
查看>>
[LeetCode]Integer to English Words
查看>>
springboot之模板
查看>>
Javascript 中 检查一个数组是否包含某对象
查看>>
5月20日工作日志(奇异森林完工部分截图)
查看>>
navicat for mysql 安装教程
查看>>
八,裁剪linux3.19.9内核,制作jffs2和yaffs2根文件系统
查看>>
java面试每日一题11
查看>>
CentOs 6.5设置使用私钥登录关闭ssh的密码登录修改ssh默认端口
查看>>
12-Python操作json
查看>>
最强NLP模型-BERT
查看>>
HTML5实现全屏
查看>>
MongoDB 创建,更新,删除文档 下
查看>>
与Jquery Mobile的第一次亲密接触
查看>>
实验十三
查看>>
magento 1.6.1.0 安装不上,提示报错:There has been an error processing your request
查看>>
ubuntu server 14 查看硬盘使用情况
查看>>
有道词典 安卓版 更新日志 - imsoft.cnblogs
查看>>
如何在 Debian GNU/Linux 添加修改软件源
查看>>