方案一:

希望实现 当鼠标离开一个DIV的时候触发一个事件处理函数 于是用onmouseout 结果却发现它的触发是不是也太敏感了 原因现在也没有弄清楚 IE下好像是因为区分mouseout时的fromElement还是toElement ,IE 5.5以上的onmouseleave事件就比较好用 偏FF又不支持这个事件 只有自己想办法手工判断了。

<SCRIPT>
/***
* 参数e 是对象传递的触发事件 FF下想访问event对象必须传递event参数
* 参数o 是目标DIV对象
*/  
function fun(e,o) {
        /* FF 下判断鼠标是否离开DIV */
        if(window.navigator.userAgent.indexOf("Firefox")>=1) {
            var x = e.clientX + document.body.scrollLeft;
            var y = e.clientY + document.body.scrollTop ;
            var left = o.offsetLeft;
            var top = o.offsetTop;
            var w = o.offsetWidth;
            var h = o.offsetHeight;
           
            if(y < top || y > (h + top) || x > left + w || x<left ) {
                alert("mouseout");
            }
        }

/* IE */
        if(o.contains(event.toElement ) == false    )
alert("mouseout");
       
    }
</SCRIPT>

<DIV οnmοuseοut=fun(event,this)>content</DIV>

需要注意 在取鼠标的值的时候 一定要加上滚动条已经拖动过的内容e.clientY + document.body.scrollTop 如果只是e.clientY得到是个错误的值 当然如果高宽都很小 是看不出来问题。 取一个对象的高和宽 也可以使用 clientHeight clientWidth 属性 以后遇到FF IE不兼容的时候要多看看FF的开发手册 http://developer.mozilla.org/en/docs/DOM:element.offsetLeft

方案二:(与一相似)

js的onmouseout有很奇怪的一个问题。例如

<div οnmοuseοut="alert(123)">

<a href="#">test</a>

</div>

我们预期只有当鼠标从div中移开的时候才会触发onmouseout事件,可是,事实上,当我们移到div中的元素时,例如本例中的a标签时,就会触发onmousout事件。也就是说,移到对象的子对象上,也算onmouseout了。这往往会让我们预期的效果达不到。今天的工作就遇到了这个问题。在blueidea上搜了一下,找了解决办法。兼容IE和FF。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>阿当制作</title></head>

<body><script type="text/javascript">function test(obj, e) {if (e.currentTarget) {if (e.relatedTarget != obj) {if (obj != e.relatedTarget.parentNode) {     alert(1);    }   }} else {if (e.toElement != obj) {if (obj != e.toElement.parentNode) {     alert(1);    }   }}}</script><div onmouseout="test(this, event)" style="width:100px;height:100px;border:1px #666 solid"><span style="margin:5px;width:100%;height:100%;border:1px #ff0000 solid">faddsf</span></div></body></html>

今天发现JQ中关于这个问题,已经有了一个好的解决办法了.呵呵,jquery中定义了一种事件叫做"mouseleave",用这个事件做事件句柄的话,就可以解决这个问题了.越来越发现jquery是个好东西了.

方案三:

,jQuery V1.2.2推荐用bind("mouseleave",function(){})来代替以前的mouseover方法
用bind("mouseenter",function(){})来代替mouseout,同样也针对以前的hover方法,要看详细的说明点这个地址:http://docs.jquery.com/Release:jQuery_1.2.2

$(document).ready(function() {
   $("#a1").bind("mouseleave", function(){
   $('<div style="color:red;">out</div>')
   .insertAfter($(this));
});
});

javascript onmouseout问题解决方案相关推荐

  1. 【转】调试JavaScript 错误的解决方案

    A  使用alert() 和document.write() 方法监视变量值 如果要中断代码的运行,监视变量的值,则使用alert() 方法: 如果需要查看的值很多,则使用document.write ...

  2. IEC61131, IEC61499图形可视化,PLC图形可视化,PLC组态,VBScript和JavaScript脚本,解决方案源代码, 开发平台100% VC++源码2018!

    IEC61131, IEC61499图形可视化,PLC图形可视化,PLC组态,VBScript和JavaScript脚本,解决方案源代码, 开发平台100% VC++源码2018! -- 全球领先. ...

  3. JavaScript异步编程解决方案探究

    javascript的天生单线程特性,使得异步编程对它异常重要,早期的通常做法是用回调函数来解决.但是随着逻辑的复杂,和javascript在服务端的大显神通,使得我们很容易就陷入"回调陷井 ...

  4. JavaScript——对象合并解决方案

    解决方案 1.extend() var obj1 = {a:1,b:2};var obj2 = {c:3,d:4};var assignObj = $.extend(obj1,obj2);consol ...

  5. JavaScript——判断undefined解决方案

    基本概念 undefined:undefined 属性用于存放 JavaScript 中未定义的值. 解决方案 方法一:== var exp = undefined; if (exp == undef ...

  6. javascript跨域解决方案

    2019独角兽企业重金招聘Python工程师标准>>> 最近遇到了https跨域访问http域的问题,很多朋友理所当然的认为简单,问题是https跨域访问到http域上的资源,会进行 ...

  7. 与其他Javascript类库冲突解决方案

    $(document).ready(function() { var $jq = jQuery.noConflict();$jq('#id').show(); });

  8. 8个使用JavaScript展示图片解决方案

    1. JonDesign's SmoothGallery 2.0 SmoothGallery demo 2. (E)2 Photo Gallery (E)2 Photo Gallery demo 3. ...

  9. JavaScript 教程(二)

    面向对象编程 实例对象与 new 命令 JavaScript 语言具有很强的面向对象编程能力,这里介绍 JavaScript 面向对象编程的基础知识 对象是什么 面向对象编程(Object Orien ...

最新文章

  1. 5.hadoop常用命令
  2. linux abs 和 屏幕 大小关系,观点|一个 Linux 菜鸟的回忆录
  3. JZOJ 5923. 【NOIP2018模拟10.23】Bomb
  4. 【VMCloud云平台】拥抱Docker(六)关于DockerFile(1)
  5. 阿里P8架构师谈:MySQL行锁、表锁、悲观锁、乐观锁的特点与应用
  6. Android官方开发文档Training系列课程中文版:构建第一款安卓应用之环境配置
  7. office2007右键doc,xls
  8. python Django之Web框架本质 (2)
  9. JAVA异常-面试题
  10. C++新手入门学习笔记(跟着敲)
  11. 连接mysql出现Access denied for user ‘root’@’localhost’ (using password:YES)问题解决办法...
  12. 黑马程序员python全套视频-python视频教程免费:求黑马程序员python教程?
  13. 神舟bios更改第一启动项为u盘
  14. Javassist-手写字节码文件
  15. 素材网站整理(持续更新ing~)
  16. 纹理分析方法:共生矩阵的计算
  17. css 所有后代元素,CSS 选择子元素和后代元素
  18. 条件运算符 c语言,C语言 —— 条件运算符
  19. vue项目中嵌入软键盘(中文/英文)
  20. QQ Tim另存为文件时闪退,错误模块ntdll.dll

热门文章

  1. 异常处理(try/catch)
  2. Kali渗透测试——快速查找Metasploit的模块
  3. struts2文件上传大小限制问题小结(引用)
  4. Android存储之SQLiteDatbase
  5. Flex Timer 定时器
  6. 升级nginx以支持http2的方法
  7. 使用UWA GOT优化Unity性能和内存
  8. String.Format in javascript
  9. 简单比较搜索引擎与推荐系统
  10. ASP.NET MVC基于标注特性的Model验证:DataAnnotationsModelValidator