在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>
分享到:
相关推荐
问题是这样的:一个div元素要触发onmouseout事件,同时这个div内部还有子元素,于是当鼠标移动到该div的子元素上时,onmouseout事件也被触发了。在要做浮动层效果的时候会经常遇到这个问题。 解决方法一: 使用...
另一种解决方案是利用 `onmousemove` 事件的优先级来阻止在子元素中触发 `onmouseout` 事件。 ```html ('div2').style.display='block';">触发显示浮动层 ;" onmouseout="this.style.display='none';"> <li>1 ...
但在一些场景下,我们需要在鼠标从子元素移出到父元素时不触发父元素的onmouseout事件,以避免不必要的响应。 在文档中提到的场景,就是要实现阻止子元素的onmouseout事件触发父元素的onmouseout事件。具体实现方法...
### JavaScript `onmouseout` 解决方案详解 #### 引言 在前端开发中,我们经常需要处理用户与页面元素之间的交互行为。其中一种常见的需求是当用户的鼠标移出某个元素时,执行特定的操作,比如隐藏一个提示框或者...
- onmouseout:鼠标指针离开元素区域时触发。 2. 键盘事件: - onkeypress:用户按下并释放一个键时触发,通常与字符输入有关。 - onkeydown:用户按下键盘上的键时触发。 - onkeyup:用户释放键盘上的键时触发...
- **`onMouseOut`**:当用户的鼠标光标离开某个元素时触发。与`onMouseOver`相反。 - **兼容性**:IE4 | N3 | O3 #### 二、键盘事件 键盘事件用于响应用户的键盘输入行为。 - **`onKeyPress`**:当键盘上的某个键...
为了解决跨浏览器的`mouseover`和`mouseout`事件冒泡问题,开发者们采用了各种方法。例如,可以利用W3C标准中的`relatedTarget`属性来获取与事件相关的元素。`relatedTarget`属性在`mouseover`事件触发时指向鼠标...
这种行为在某些情况下可能会导致意外的触发,特别是当元素内包含其他子元素时,用户在子元素间移动鼠标会导致父元素不断触发`onmouseover`和`onmouseout`事件,这并非总是我们期望的行为。 例如,假设有一个包含子...
与`onmouseover`类似,如果在父元素上绑定`onmouseout`,当鼠标移出父元素或其任何子元素时,事件也会被触发。 然而,这种行为并不总是符合开发者的需求,有时我们只想在鼠标真正离开父元素边界时触发事件,而不是...
onmouseover事件是在鼠标移到元素上时触发的,而onmouseout事件是在鼠标离开元素时触发的。在IE浏览器中,我们可以使用JavaScript来捕捉这些事件,并执行相应的操作。 在Firefox浏览器中,我们可以使用CSS的:hover...
然而,由于`onmouseout`触发条件较为敏感,很容易在经过元素内的子元素时就被触发,从而导致一些预期之外的行为。例如,当鼠标在包含链接文字的层上移动时,鼠标只要接触到链接,就会触发`onmouseout`事件导致层隐藏...
- **`onmouseout`**: 鼠标离开元素时触发。 - **`onmouseover`**: 鼠标进入元素时触发。 - **`onmouseup`**: 用户释放鼠标按钮时触发。 - **`onmousewheel`**: 用户滚动鼠标滚轮时触发。 #### 4. 键盘事件 - **`...
### IE6中的`li:hover`问题及解决方案 #### 背景介绍 早期浏览器的兼容性问题一直是前端开发者面临的一大挑战。特别是在Internet Explorer 6(简称IE6)中,由于其对CSS支持的限制,很多现代网页设计效果都无法正常...
也就是说,移到对象的子对象上,也算onmouseout了。但这往往会达不到我们想要的预期效果。这是由于javascript自身的冒泡特性导致的(即在子元素上触发了事件,并冒泡到了父元素-堆栈后进先出算法)。今天在网上搜了...
本篇文章将探讨如何实现一个简短的兼容IE和Firefox的鼠标经过事件(onmouseover和onmouseout)的解决方案。 首先,让我们了解这两个事件。`onmouseover`事件在鼠标指针进入一个元素时触发,而`onmouseout`事件则在...
本文主要探讨了利用CSS技术实现下拉菜单的实践方法,并针对IE6.0等早期浏览器存在的兼容性问题,提出了解决方案。 **1. CSS技术与下拉菜单** CSS(层叠样式表)是一种用于定义网页元素样式和布局的语言,它可以将...