javascript代码实例教程-JavaScript停止冒泡和阻止浏览器默认行为的代码教程

发布时间:2019-01-01 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了javascript代码实例教程-JavaScript停止冒泡和阻止浏览器默认行为的代码教程脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过。

事件兼容

view plain copy

function myfn(e){ VAR evt = e ? e:window.event; }  

js停止冒泡

view plain copy

function myfn(e){  

window.event? window.event.cancelBubble = true : e.stopPropagation();  

}  

js阻止默认行为

view plain copy

function myfn(e){  

window.event? window.event.returnValue = false : e.preventDefault();  

}  

以下是具体关于JavaScript停止冒泡和阻止默认行为的详细说明

止冒泡

w3c的方法是e.stopPRopagation(),IE则是使用e.cancelBubble = true;

stopPropagation也是事件对象(Event)的一个方法,作用是阻止目标元素的冒泡事件,但是会不阻止默认行为。什么是冒泡事件?如在一个按钮是绑定一个”click”事件,那么”click”事件会依次在它的父级元素中被触发 。stopPropagation就是阻止目标元素的事件冒泡到父级元素。如:

[htML] view plain copy

<p id=&#39;p' onclick='alert("p");'>  

<ul onclick='alert("ul");'>  

<li onclick='alert("li");'>test</li>  

</ul>  

</p  

上面的代码,我们单击test时,会依次触发alert(“li”),alert(“ul”),alert(“p”),这就是事件冒泡。

阻止冒泡

[html] view plain copy

<p id='p' onclick='alert("p");'>  

    <ul onclick='alert("ul");'>  

        <li onclick='liClick();'>test</li>  

    </ul>  

</p>  

<script>  

    function liClick(e) {  

        window.event? window.event.cancelBubble = true : e.stopPropagation();  

        alert("li");  

    }  

</script>  

上面的代码,我们单击test时,只会触发alert("li"),事件不会向父级传递。

阻止默认行为

w3c的方法是e.preventDefault(),IE则是使用e.returnValue = false;

preventDefault它是事件对象(Event)的一个方法,作用是取消一个目标元素的默认行为。既然是说默认行为,当然是元素必须有默认行为才能被取消,如果元素本身就没有默认行为,调用当然就无效了。什么元素有默认行为呢?如链接<a>,提交按钮<input tyPE=”submIT”>等。当Event 对象的 cancelable为false时,表示没有默认行为,这时即使有默认行为,调用preventDefault也是不会起作用的。

我们都知道,链接<a>的默认动作就是跳转到指定页面,下面就以它为例,阻止它的跳转:

view plain copy

//假定有链接<a href="https://caibaojian.COM/" id="testA" >caibaojian.com</a>  

var a = document.getElementById("testA");  

a.onclick =function(e){  

if(e.preventDefault){  

e.preventDefault();  

}else{  

window.event.returnValue == false;  

}  

}  

return false

javascript的return false只会阻止默认行为,而是用jQuery的话则既阻止默认行为又防止对象冒泡。

下面这个使用原生js,只会阻止默认行为,不会停止冒泡

[html] view plain copy

<p id='p' onclick='alert("p");'>  

    <ul onclick='alert("ul");'>  

        <li onclick='alert("li");'>  

            <a href="https://www.tooklili.com:81/took-app"id="testB">took-app</a>  

        </li>  

    </ul>  

</p>  

<script>  

    var a = document.getElementById("testB");  

    a.onclick = function(){  

        return false;  

    };  

</script>  

上述代码,点击链接后,没有跳转,默认行为被阻止,但依次弹出了alert("li")、alert('ul")、alert("p"),事件冒泡没有被阻止。

下面这个是使用jquery,既阻止默认行为又停止冒泡

[html] view plain copy

<!DOCTYPE html>  

<html lang="en">  

<head>  

    <;meta charset="UTF-8">  

    <title>Title</title>  

    <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>  

</head>  

<body>  

<p id='p' onclick='alert("p");'>  

    <ul onclick='alert("ul");'>  

        <li onclick='alert("li");'>  

            <a href="https://www.tooklili.com:81/took-app"id="testB">took-app</a>  

        </li>  

    </ul>  

</p>  

<script>  

    $('#testB').on('click',function () {  

        return false;  

    });  

</script>  

</body>  

</html>  

上述代码,点击链接,是没有反应的,jquery中,return false 既阻止的默认行为,又阻止的冒泡行为。

总结使用方法

当需要停止冒泡行为时,可以使用

view plain copy

function stopBubble(e) {   

//如果提供了事件对象,则这是一个非IE浏览器   

if ( e && e.stopPropagation )   

    //因此它支持W3C的stopPropagation()方法   

    e.stopPropagation();   

else   

    //否则,我们需要使用IE的方式来取消事件冒泡   

    window.event.cancelBubble = true;   

}  

当需要阻止默认行为时,可以使用

view plain copy

//阻止浏览器的默认行为   

function stopDefault( e ) {   

    //阻止默认浏览器动作(W3C)   

    if ( e &amp;& e.preventDefault )   

        e.preventDefault();   

    //IE中阻止函数器默认动作的方式   

    else   

        window.event.returnValue = false;   

    return false;   

}  

事件注意点

event代表事件的状态,例如触发event对象的元素、鼠标的位置及状态、按下的键等等

event对象只在事件发生的过程中才有效。

firefox里的event跟IE里的不同,IE里的是全局变量,随时可用;firefox里的要用参数引导才能用,是运行时的临时变量。

在IE/opera中是window.event,在Firefox中是event;而事件的对象,在IE中是window.event.srcElement,在Firefox中是event.target,Opera中两者都可用。

下面两句效果相同:

view plain copy

function a(e){  

var e = (e) ? e : ((window.event) ? window.event : null);   

var e = e || window.event; // firefox下window.event为null, IE下event为null  

}  

觉得可用,就经常来吧! 脚本宝典 欢迎评论哦! js脚本,巧夺天工,精雕玉琢。小宝典献丑了!

脚本宝典总结

以上是脚本宝典为你收集整理的javascript代码实例教程-JavaScript停止冒泡和阻止浏览器默认行为的代码教程全部内容,希望文章能够帮你解决javascript代码实例教程-JavaScript停止冒泡和阻止浏览器默认行为的代码教程所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。