ITPub博客

首页 > IT职业 > IT图书 > Javascript中的事件冒泡

Javascript中的事件冒泡

IT图书 作者:ybbyic 时间:2021-09-09 09:11:21 0 删除 编辑

这是一个基础性的文章,使用Javascript观察DOM中的事件冒泡机制,并介绍如何阻止默认行为和如何组织事件冒泡的方法。

1. 第一个例子可以在Firefox下运行

图片描述


    

        
        
        
        
    

图片描述

 

图片描述

function fn1(event) {
    alert('click google');
}

function fn2(event) {
    alert('click google');
    event.preventDefault();
}

function fn3(event) {
    alert('click google');
    event.stopPropagation();
}

function fn4(event) {
    alert('click google');
    event.preventDefault();
    event.stopPropagation();
}图片描述

 

点击第一个链接,alert_google -> alert_container2 -> alert_container1 -> open_google_page

点击第二个链接,alert_google -> alert_container2 -> alert_container1

点击第三个链接,alert_google -> open_google_page

点击第四个链接,alert_google

 

可以看到,事件冒泡是从最初引发事件的HTML节点开始,一步步向上引发父节点的相同事件。

在Firefox中,我们可以通过 preventDefault 函数阻止默认的行为(比如这个例子中,点击链接的默认行为是打开链接地址)

通过 stopPropagation 函数阻止事件冒泡。

 

相同的过程在IE下的实现有点不同,一是事件对象(event)在IE下是作为 window 对象的一个属性,

二是阻止事件的默认行为或阻止事件冒泡的做法也有所不同,请看:

2. 观察IE下的事件冒泡

 

图片描述


    

                     href="http://www.google.com" target="_blank" onclick="fn2_ie();">Google
                     href="http://www.google.com" target="_blank" onclick="fn4_ie();">Google
    

图片描述

 

图片描述

function fn1_ie() {
    alert('click google');
}

function fn2_ie() {
    alert('click google');
    event.returnValue = false;
}

function fn3_ie() {
    alert('click google');
    event.cancelBubble = true;
}

function fn4_ie() {
    alert('click google');
    event.returnValue = false;
    event.cancelBubble = true;
}图片描述

 

同样:

点击第一个链接,alert_google -> alert_container2 -> alert_container1 -> open_google_page

点击第二个链接,alert_google -> alert_container2 -> alert_container1

点击第三个链接,alert_google -> open_google_page

点击第四个链接,alert_google

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/1769/viewspace-2800203/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-04-15

  • 博文量
    88
  • 访问量
    1012