`

onmouseout,mouseover经过子元素也触发的问题解决方案(兼容)

阅读更多

在mouseout与mouseover的冒泡问题上,相信有很多朋友都遇到过。今天这里就总结一下关于mouseover和mouseout冒泡问题的解决方案:

 

首先,看下event.relatedTarget的用法。

relatedTarget 事件属性返回与事件的目标节点相关的节点。

relatedTarget不支持IE。

对于 mouseover 事件来说,该属性是鼠标指针移到目标节点上时所离开的那个节点。

对于 mouseout 事件来说,该属性是离开目标时,鼠标指针进入的节点。

对于其他类型的事件来说,这个属性没有用。

 

 

html代码:

<div id='but_temp'><a href='#'>这里是文字</a>
	<div>第二方收复失地还 <br>sdfsjdlfsdjlfksdjlfksjdflk
	<br>
	<div>第三层第三层第三层第三层第三层第三层<br>
	第三层第三层第三层第三层第三层第三层第三层</div>
	<br>
	</div>
</div>

 

js代码:

<script type="text/javascript" >
	var d1 = document.getElementById('but_temp');
	d1.onmouseover = mouseover_x ;
	d1.onmouseout = mouseout_x ;
function mouseover_x ( ae ){
	var e = window.event || ae ;
	var s = e.fromElement || e.relatedTarget ;
	if( document.all ){
		if(  !(s == this || this.contains(s))  ){
			alert("IE: 你 in 了 !");
		}
	}else{
		var res= this.compareDocumentPosition(s) ;   
		if(  !(s == this || res == 20 || res == 0 )  ){
			alert("FF: 你 in 了 !");
		}
	}
}

function mouseout_x( ae ){
	    var e = window.event || ae;
        var s = e.toElement || e.relatedTarget;   
        //var temp = document.getElementById('but_temp');   
        if(document.all){   
            if( !this.contains(s) ){   
                alert('IE: 你 out 了');   
            }   
        }else{   
            var res= this.compareDocumentPosition(s) ;     
            if( ! ( res == 20 || res == 0) ){      
                alert('FF: 你 out 了');   
            }     
        }  
}
</script>

 

分享到:
评论

相关推荐

    js下关于onmouseout、事件冒泡的问题经验小结

    问题是这样的:一个div元素要触发onmouseout事件,同时这个div内部还有子元素,于是当鼠标移动到该div的子元素上时,onmouseout事件也被触发了。在要做浮动层效果的时候会经常遇到这个问题。 解决方法一: 使用...

    js下关于onmouseout、事件冒泡的问题经验小结.docx

    另一种解决方案是利用 `onmousemove` 事件的优先级来阻止在子元素中触发 `onmouseout` 事件。 ```html ('div2').style.display='block';"&gt;触发显示浮动层 ;" onmouseout="this.style.display='none';"&gt; &lt;li&gt;1 ...

    js 阻止子元素响应父元素的onmouseout事件具体实现

    但在一些场景下,我们需要在鼠标从子元素移出到父元素时不触发父元素的onmouseout事件,以避免不必要的响应。 在文档中提到的场景,就是要实现阻止子元素的onmouseout事件触发父元素的onmouseout事件。具体实现方法...

    javascript onmouseout 解决办法.docx

    ### JavaScript `onmouseout` 解决方案详解 #### 引言 在前端开发中,我们经常需要处理用户与页面元素之间的交互行为。其中一种常见的需求是当用户的鼠标移出某个元素时,执行特定的操作,比如隐藏一个提示框或者...

    js触发事件大全

    - onmouseout:鼠标指针离开元素区域时触发。 2. 键盘事件: - onkeypress:用户按下并释放一个键时触发,通常与字符输入有关。 - onkeydown:用户按下键盘上的键时触发。 - onkeyup:用户释放键盘上的键时触发...

    JS鼠标键盘触发函数大全

    - **`onMouseOut`**:当用户的鼠标光标离开某个元素时触发。与`onMouseOver`相反。 - **兼容性**:IE4 | N3 | O3 #### 二、键盘事件 键盘事件用于响应用户的键盘输入行为。 - **`onKeyPress`**:当键盘上的某个键...

    javascript mouseover、mouseout停止事件冒泡的解决方案

    为了解决跨浏览器的`mouseover`和`mouseout`事件冒泡问题,开发者们采用了各种方法。例如,可以利用W3C标准中的`relatedTarget`属性来获取与事件相关的元素。`relatedTarget`属性在`mouseover`事件触发时指向鼠标...

    onmouseover和onmouseout的一些问题思考

    这种行为在某些情况下可能会导致意外的触发,特别是当元素内包含其他子元素时,用户在子元素间移动鼠标会导致父元素不断触发`onmouseover`和`onmouseout`事件,这并非总是我们期望的行为。 例如,假设有一个包含子...

    onmouseover事件和onmouseout事件全面理解

    与`onmouseover`类似,如果在父元素上绑定`onmouseout`,当鼠标移出父元素或其任何子元素时,事件也会被触发。 然而,这种行为并不总是符合开发者的需求,有时我们只想在鼠标真正离开父元素边界时触发事件,而不是...

    兼容ie和firefox的鼠标经过(onmouseover和onmouseout)实现--简短版

    onmouseover事件是在鼠标移到元素上时触发的,而onmouseout事件是在鼠标离开元素时触发的。在IE浏览器中,我们可以使用JavaScript来捕捉这些事件,并执行相应的操作。 在Firefox浏览器中,我们可以使用CSS的:hover...

    javascript onmouseout 解决办法

    然而,由于`onmouseout`触发条件较为敏感,很容易在经过元素内的子元素时就被触发,从而导致一些预期之外的行为。例如,当鼠标在包含链接文字的层上移动时,鼠标只要接触到链接,就会触发`onmouseout`事件导致层隐藏...

    js事件触发大全

    - **`onmouseout`**: 鼠标离开元素时触发。 - **`onmouseover`**: 鼠标进入元素时触发。 - **`onmouseup`**: 用户释放鼠标按钮时触发。 - **`onmousewheel`**: 用户滚动鼠标滚轮时触发。 #### 4. 键盘事件 - **`...

    li:hover的解决方案

    ### IE6中的`li:hover`问题及解决方案 #### 背景介绍 早期浏览器的兼容性问题一直是前端开发者面临的一大挑战。特别是在Internet Explorer 6(简称IE6)中,由于其对CSS支持的限制,很多现代网页设计效果都无法正常...

    javascript中onmouse事件在div中失效问题的解决方法

    也就是说,移到对象的子对象上,也算onmouseout了。但这往往会达不到我们想要的预期效果。这是由于javascript自身的冒泡特性导致的(即在子元素上触发了事件,并冒泡到了父元素-堆栈后进先出算法)。今天在网上搜了...

    兼容ie和firefox的鼠标经过(onmouseover和onmouseout)实现–简短版

    本篇文章将探讨如何实现一个简短的兼容IE和Firefox的鼠标经过事件(onmouseover和onmouseout)的解决方案。 首先,让我们了解这两个事件。`onmouseover`事件在鼠标指针进入一个元素时触发,而`onmouseout`事件则在...

    基于CSS的下拉菜单解决方案的实践.pdf

    本文主要探讨了利用CSS技术实现下拉菜单的实践方法,并针对IE6.0等早期浏览器存在的兼容性问题,提出了解决方案。 **1. CSS技术与下拉菜单** CSS(层叠样式表)是一种用于定义网页元素样式和布局的语言,它可以将...

Global site tag (gtag.js) - Google Analytics