当前位置: 首页 > news >正文

java onmouseover_[Java教程]关于onmouseover和onmouseout的bug

[Java教程]关于onmouseover和onmouseout的bug

0 2016-11-01 23:02:52

总结了一下关于使用onmouseover以及onmouseout会出现的bug

首先简单的布局:

这是一个内容

简单写了一下样式,效果如下:

bc91bb04e6e9c61e24c974e4440db8f2.gif

js代码如下:var oBox = document.getElementById("box");oBox.onmouseover = function(){ alert(“移入");}oBox.onmouseout = function(){ alert("移出");}

需要的效果是移入时alert(“移入"),移出时alert("移出");

然而会产生一个bug,当鼠标从灰色移动到粉色区域,或者从粉色移动到灰色区域的时候,仍然会触发onmouseover和onmouseout事件.

解决思路:判断来源,如果从盒子里面移动则不触发。

首先,要借助事件对象,对事件对象进行兼容处理:var oEvent = ev || event;

事件对象中有一个属性fromElemen,获得来源,但是也存在兼容问题,只适用于高级浏览器,在chrome和ie里有relatedTarget属性var oFrom = oEvent.fromElement || oEvent.relatedTarget

判断是是否在内部移动,是则直接return返回//判断是否包含if(oFrom && oBox.contains(oFrom)){ return; }

最后js代码如下:oBox.onmouseover = function(ev){ var oEvent = ev || event;//兼容处理 var oFrom = oEvent.fromElement || oEvent.relatedTarget;//兼容处理 //如果在里面则返回 if(oFrom && oBox.contains(oFrom)){ return; } alert("移入"); };

同理,onmoouseout的解决方法代码如下:oBox.onmouseout = function(ev){ var oEvent = ev || event; //处理兼容 var oTo = oEvent.toElement || oEvent.relatedTarget; //处理兼容 //如果在里面则返回 if(oTo && oBox.contains(oTo)){ return; } alert("移出"); };

关于兼容问题,ev属于高级浏览器,event属于ie

relatedTarget属于高级浏览器,fromElement和toElement属于chrome和ie

最后介绍一种简便方法,onmouseenter事件和onmouseleave事件以及可以解决以上问题,使用方法相同。

本文网址:http://www.shaoqun.com/a/261896.html

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:admin@shaoqun.com。

seo

0

相关文章:

  • java中方法前面必须使用类名吗_java中可以直接对类名进行引用吗?
  • 博大精深!
  • java实现仿射密码_java实现仿射密码加密解密
  • IPv4单播地址
  • 几个IPv4地址类型术语
  • mysql 模拟 数据库阻塞_[数据库]MySQL 5.6中如何定位DDL被阻塞的问题
  • 感谢Thom
  • 安卓 java 卡_安卓机为什么越用越卡?疯狂堆配置的背后到底隐藏着什么?
  • 如何把普通应用程序添加到系统服务(其他方法持续增加中)
  • 基于java酒店管理系统_课内资源 - 基于JAVA实现的互联网酒店管理系统
  • 在win2000下配置php,cgi,asp运行环境
  • 传统java io_Java IO编程全解(二)——传统的BIO编程
  • 喝啤酒可测出性格
  • java. new对象 堆栈_Java 堆内存与栈内存详细介绍
  • 最有用的网络命令
  • JS 中的深拷贝与浅拷贝
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • java第三方包学习之lombok
  • React组件设计模式(一)
  • Yeoman_Bower_Grunt
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 回流、重绘及其优化
  • 解析带emoji和链接的聊天系统消息
  • 开发基于以太坊智能合约的DApp
  • 开源SQL-on-Hadoop系统一览
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • 找一份好的前端工作,起点很重要
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • 组复制官方翻译九、Group Replication Technical Details
  • ​​​​​​​​​​​​​​Γ函数
  • ​比特币大跌的 2 个原因
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • #pragma data_seg 共享数据区(转)
  • #QT(串口助手-界面)
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • (转)3D模板阴影原理
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • .Net 4.0并行库实用性演练
  • .net 验证控件和javaScript的冲突问题
  • .NET/C# 使用反射注册事件
  • .net分布式压力测试工具(Beetle.DT)
  • .NET开源项目介绍及资源推荐:数据持久层 (微软MVP写作)
  • ??eclipse的安装配置问题!??
  • @property python知乎_Python3基础之:property
  • @Service注解让spring找到你的Service bean
  • [ C++ ] 继承
  • []利用定点式具实现:文件读取,完成不同进制之间的
  • [ai笔记9] openAI Sora技术文档引用文献汇总