`

阻止冒泡(默认)事件(兼容IE8)

 
阅读更多

看下面HTML代码:

 

<div onclick="parentClicked()">
    点击我(父元素)
    <div onclick="childClicked()">
        点击我(子元素)
    </div>
</div>
<script>
function childClicked(event) {
    alert('child clicked');
}
function parentClicked(event) {
    alert('parent clicked');
}
</script>

 

上述代码运行后,点击"点击我(子元素)"文本,会发现不仅会弹出parent clicked提示,还会弹出child clicked提示,这就是js操作HTML Dom元素时的冒泡问题。关于冒泡问题,可以百度看看相关文章,比如http://www.jb51.net/article/42492.htm。

 

在这里,我们如果要阻止冒泡事件,往往会使用event.stopPropagation()方法阻止事件冒泡到父级元素。但这个方法在IE8中并不能使用。在IE8中,需要使用来阻止冒泡,所以有如下包裹函数:

 

function stopBubble(e) {
    // 如果提供了事件对象,则这是一个非IE浏览器
    if ( e && e.stopPropagation ) {
        // 因此它支持W3C的stopPropagation()方法 
        e.stopPropagation();
    } else { 
        // 否则,我们需要使用IE的方式来取消事件冒泡
        window.event.cancelBubble = true;
    }
}

 

 

这里顺便说一下,阻止默认事件也是有这个问题,下面的代码就就实现了点击A标签并不会跳转:

 

<a href="www.baidu.com" onclick="clicked()">点击我并不会跳转</a>
<script>
function stopDefault( e ) {
     // 阻止默认浏览器动作(W3C)
     if ( e && e.preventDefault ) {
         e.preventDefault();
     } else {
        // IE中阻止函数器默认动作的方式
        window.event.returnValue = false;
    }
    return false;
}
function clicked(event) {
    stopDefault(event);
    alert("我阻止了点击A标签的默认事件");
}
</script>

 

 

分享到:
评论

相关推荐

    JS事件冒泡浏览器兼容

    此外,`event.stopPropagation()`方法可以阻止事件继续向上冒泡,而`event.stopImmediatePropagation()`则不仅可以阻止冒泡,还能阻止同一元素上的其他事件处理函数被执行。 总结一下,JavaScript事件冒泡是浏览器...

    js阻止冒泡和默认事件(默认行为)详解

    在实际的应用中,这两者常常结合使用,比如在一个下拉菜单的点击事件中,我们需要阻止冒泡以避免其他元素的事件处理器被触发,同时也需要阻止默认行为(如表单的提交动作)来防止页面刷新。 作者在文章中还提到了...

    JS阻止冒泡事件以及默认事件发生的简单方法

    在文章中提到了两种重要的函数,分别是阻止冒泡和阻止默认事件的函数。 首先是阻止冒泡的函数stopBubble。该函数接收一个事件对象作为参数,通过调用事件对象的stopPropagation方法阻止事件冒泡。stopPropagation是...

    浅谈js停止事件冒泡 阻止浏览器的默认行为(阻止超连接 #)

    在前端开发工作中,由于浏览器兼容性等问题,我们会经常用到“停止事件冒泡”和“阻止浏览器默认行为”。 1..停止事件冒泡 JavaScript代码 //如果提供了事件对象,则这是一个非IE浏览器 if ( e && e....

    js阻止默认浏览器行为与冒泡行为的实现代码.docx

    在JavaScript中,我们经常需要阻止默认的浏览器行为和事件冒泡,以便实现自定义的功能。在前端开发中,由于浏览器的兼容性问题,理解和掌握这些技术至关重要。下面将详细介绍如何实现这两种功能。 1. **阻止浏览器...

    js阻止冒泡及jquery阻止事件冒泡示例介绍

    js阻止冒泡 在阻止冒泡的过程中,W3C和IE采用的不同的方法,那么我们必须做以下兼容。 代码如下: function stopPro(evt){ var e = evt || window.event; //returnValue如果设置了该属性,它的值比事件句柄的返回值...

    min-width For ie6 与传统事件阻止

    后者则同时阻止了事件的默认行为和事件冒泡。在早期的JavaScript开发中,尤其是在DOM0级事件处理程序中,常常使用`return false;`来阻止事件,例如: ```javascript element.onclick = function() { // 阻止点击...

    jQuery中阻止冒泡事件的方法介绍

    2. **`return false`**:这是一个简化的阻止冒泡的方式,同时也阻止了事件的默认行为(如链接的跳转)。但是,这种方法并不推荐,因为它可能会引起其他副作用,比如阻止了事件处理函数内部的正常流程。 3. **兼容性...

    JavaScript捕捉事件和阻止冒泡事件实例分析

    IE6、IE7和IE8浏览器只支持冒泡流,不支持捕获流,这意味着在这些浏览器中不能使用捕获阶段的事件监听。这一点在进行跨浏览器开发时需要特别注意。 知识点七:实战案例分析 文档中通过一个实例来说明事件冒泡的行为...

    js停止冒泡和阻止浏览器默认行为的简单方法

    在JavaScript中,处理事件时,有时我们需要控制事件的传播(冒泡)以及阻止浏览器执行其默认行为。本文将详细介绍如何实现这两个功能,并提供兼容不同浏览器的解决方案。 **停止冒泡** 事件冒泡是指事件从最深的...

    js冒泡、捕获事件及阻止冒泡方法详细总结

    `:这是最简单的方法,但需要注意的是,它不仅阻止了事件冒泡,还可能阻止了默认行为,比如链接的跳转或者表单的提交。例如: ```javascript $('#clickMe').click(function(){ alert('hello'); return false; }...

    javascript阻止事件冒泡和浏览器的默认行为

    而在IE浏览器中(IE8及以下版本),需要使用`cancelBubble`属性来阻止冒泡。上面的代码中`stopBubble(e)`函数就演示了如何根据浏览器的不同来阻止事件冒泡。 ```javascript function stopBubble(e) { // 如果提供...

    JS在IE和FF中的兼容性问题

    - 事件冒泡:IE默认支持,FF需要设置 `event.cancelBubble = true` 来阻止冒泡。 3. **CSS操作**: - `style` 对象:IE和FF对某些CSS属性的命名不一致,如 `border-color` 在IE中为 `borderColor`,FF中为 `...

    JavaScript中捕获/阻止捕获、冒泡/阻止冒泡方法

    为了跨浏览器兼容性,开发者可能需要使用`event.cancelBubble = true`(IE)或`event.stopPropagation()`(W3C标准)来阻止事件冒泡,以及`event.capture = true`(非标准)或`addEventListener`的第三个参数为`true...

    js阻止默认浏览器行为与冒泡行为的实现代码

    同样,如果事件对象存在并且有`stopPropagation`方法,就调用它来阻止冒泡。否则,设置`cancelBubble`属性为`true`。示例函数`stopBubble`演示了如何使用这两种方法来实现事件冒泡的阻止。 在实际应用中,如在表单...

    一个右键菜单,支持不同对象不同菜单,兼容IE、Firefox

    4. **事件冒泡与阻止默认行为**:防止浏览器自带的右键菜单弹出,同时处理好事件的冒泡,确保仅在需要时执行自定义菜单。 5. **浏览器API兼容**:比如,某些功能在IE中可能需要特定的API或方法,而在Firefox中则使用...

    JS传播事件、取消事件默认行为、阻止事件传播详解

    JavaScript中的事件处理是Web开发中的核心概念,它涉及到事件的传播、取消默认行为以及阻止事件传播等关键点。本文将详细解析这些概念。 首先,**事件处理程序的返回值**在JavaScript中扮演着一个特殊的角色。当...

    重新认识vue之事件阻止冒泡的实现

    Vue还提供了其他的事件修饰符,如`.prevent`用于阻止默认行为(如表单提交),`.capture`用于在事件冒泡开始时触发事件处理函数,`.self`只在事件发生在目标元素自身时触发,`.once`只触发一次,以及`.passive`优化...

Global site tag (gtag.js) - Google Analytics