浅谈JavaScript的事件


Posted in Javascript onFebruary 27, 2015

1、事件流

    事件流描述的是从页面中接收事件的顺序。但是IE提出的是冒泡流,而Netscape Communicator提出的是捕获流。
JavaScript事件流

2、事件冒泡(event bubbling)

    事件开始由最具体的元素(嵌套层次最深的那个节点)接收,然后逐级向上传播为较不为具体的节点(文档)。如下:

<html>

    <head>

        <title>事件冒泡</title>

    </head>

    <body>

        <div id="myDiv">点击我</div>

    </body>

</html>

window.onload = function(){

    var obj = document.getElementById("test");

    obj.onclick = function(){

        alert(this.tagName);

    };

    document.body.onclick = function(){

        alert(this.tagName);

    };

    document.documentElement.onclick = function(){

        alert(this.tagName);

    };

    document.onclick = function(){

        alert("document");

    };

    window.onclick = function(){

        alert("window");

    }

};

事件传播顺序:div——>body——>html——>document

注意:
    现代所有浏览器都支持冒泡事件,但实现还有一些差别。IE5.5及更早版本中的事件冒泡会直接从body跳到document(不执行html)。Firefox、Chrome和Safari则将事件一直冒泡到window对象。

3、停止事件冒泡和取消默认事件

 a. 获取事件对象

function getEvent(event) {

// window.event IE

// event 非IE

return event || window.event;

}

 b 功能:停止事件冒泡 
function stopBubble(e) {

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

 if ( e && e.stopPropagation ) {

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

 e.stopPropagation();

} else {

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

window.event.cancelBubble = true;

}

}

 c. 阻止浏览器的默认行为

function stopDefault( e ) {

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

     if ( e && e.preventDefault ) {

         e.preventDefault();

     } else {

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

        window.event.returnValue = false;

    }

    return false;

}
Javascript 相关文章推荐
html数组字符串拼接的最快方法
Sep 16 Javascript
JQuery为页面Dom元素绑定事件及解除绑定方法
Apr 23 Javascript
JS+CSS实现模仿浏览器网页字符查找功能的方法
Feb 26 Javascript
javascript实现checkbox复选框实例代码
Jan 10 Javascript
AngularJS实现路由实例
Feb 12 Javascript
JS实现隔行换色的表格排序
Mar 27 Javascript
Restify中接入Socket.io报Error:Can’t set headers的错误解决
Mar 28 Javascript
vue中axios解决跨域问题和拦截器的使用方法
Mar 07 Javascript
node中间层实现文件上传功能
Jun 11 Javascript
HTML+JS实现“代码雨”效果源码(黑客帝国文字下落效果)
Mar 17 Javascript
vant实现购物车功能
Jun 29 Javascript
JavaScript常用进制转换及位运算实例解析
Oct 14 Javascript
JS实现图片放大镜效果的方法
Feb 27 #Javascript
浅谈javascript中的instanceof和typeof
Feb 27 #Javascript
js实现有时间限制消失的图片方法
Feb 27 #Javascript
js用拖动滑块来控制图片大小的方法
Feb 27 #Javascript
javascript中局部变量和全局变量的区别详解
Feb 27 #Javascript
对比分析AngularJS中的$http.post与jQuery.post的区别
Feb 27 #Javascript
JavaScript中Function详解
Feb 27 #Javascript
You might like
在PHP中使用模板的方法
2008/05/24 PHP
Laravel 连接(Join)示例
2019/10/16 PHP
JQuery 应用 JQuery.groupTable.js
2010/12/15 Javascript
js 浏览器事件介绍
2012/03/30 Javascript
js 获取input点选按钮的值的方法
2014/04/14 Javascript
Jquery焦点与失去焦点示例应用
2014/06/10 Javascript
JS实现页面超时后自动跳转到登陆页面
2015/01/19 Javascript
JavaScript模板引擎用法实例
2015/07/10 Javascript
原生JS实现仿淘宝网左侧商品分类菜单效果代码
2015/09/10 Javascript
JavaScript高仿支付宝倒计时页面及代码实现
2016/10/21 Javascript
JavaScript队列函数和异步执行详解
2017/06/19 Javascript
jQuery Ajax async=&gt;false异步改为同步时,解决导致浏览器假死的问题
2019/07/22 jQuery
JavaScript代码压缩工具UglifyJS和Google Closure Compiler的基本用法
2020/04/13 Javascript
在elementui中Notification组件添加点击事件实例
2020/11/11 Javascript
简要讲解Python编程中线程的创建与锁的使用
2016/02/28 Python
Python实现完整的事务操作示例
2017/06/20 Python
python使用pyqt写带界面工具的示例代码
2017/10/23 Python
Python实现从log日志中提取ip的方法【正则提取】
2018/03/31 Python
详谈套接字中SO_REUSEPORT和SO_REUSEADDR的区别
2018/04/28 Python
简单了解Django应用app及分布式路由
2019/07/24 Python
浅谈JupyterNotebook导出pdf解决中文的问题
2020/04/22 Python
python 将html转换为pdf的几种方法
2020/12/29 Python
python pyg2plot的原理知识点总结
2021/02/28 Python
HTML5本地存储之Database Storage应用介绍
2013/01/06 HTML / CSS
澳大利亚领先的优质葡萄酒拍卖会:Langton’s Fine Wines
2019/03/24 全球购物
英国在线购买马术服装:EQUUS
2019/07/12 全球购物
大学生应聘自荐信
2013/10/11 职场文书
创业者迈进成功第一步:如何写创业计划书?
2014/03/22 职场文书
2014年安全生产大检查方案
2014/05/13 职场文书
师范类求职信
2014/06/21 职场文书
增值税发票丢失证明
2015/06/19 职场文书
班干部竞选演讲稿(精选5篇)
2019/09/24 职场文书
如何在向量化NumPy数组上进行移动窗口
2021/05/18 Python
如何用vue实现网页截图你知道吗
2021/11/17 Vue.js
关于JavaScript 中 if包含逗号表达式
2021/11/27 Javascript
Python学习之包与模块详解
2022/03/19 Python