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

这篇文章主要介绍了js传播事件、取消事件默认行为、阻止事件传播,通过事件处理程序的返回值 调用顺序讲解了详细的过程,对js感兴趣的朋友可以参考下本篇文章

1.事件处理程序的返回值 

      通常情况下,返回值false就是告诉浏览器不要执行这个事件相关的默认操作。例如,表单提交按钮的onclick事件处理程序能通过返回false阻止浏览器提交表单,再如a标签的onclick事件处理程序通过返回false阻止跳转href页面。类似地,如果用户输入不合适的字符,输入域上的onkeypress事件处理程序能通过返回false来过滤键盘输入。 
      事件处理程序的返回值只对通过属性注册的处理程序才有意义。

2.调用顺序

      文档元素或其他对象可以为指定事件类型注册多个事件处理程序。当适当的事件发生时,浏览器必须按照如下规则调用所有的事件处理程序:

通过设置对象属性或HTML属性注册的处理程序一直优先调用。
使用addEventListener()注册的处理程序按照它们的注册顺序调用。
使用attachEvent()注册的处理程序可能按照任何顺序调用,所以代码不应该依赖于调用顺序

3.事件传播

  在调用在目标元素上注册的事件处理函数后,大部分事件会“冒泡”到DOM树根。调用目标的父元素的事件处理程序,然后调用在目标的祖父元素上注册的事件处理程序。这会一直到Document对象,最后到达Window对象。

  发生在文档元素上的大部分事件都会冒泡,值得注意的例外是focus、blur和scroll事件。文档元素的load事件会冒泡,但它会在Document对象上停止冒泡而不会传播到Window对象。只有当整个文档都加载完毕时才会触发Window对象的load事件。

4.取消事件默认行为、阻止事件传播

      在支持addEventListener()的浏览器中,可以通过调用事件对象的preventDefault()方法取消事件的默认操作。IE9之前的IE中,可以通过设置事件对象的returnValue属性为false达到同样的效果。下面一段代码是结合三种技术取消事件:

function cancelHandler(event){ var event=event||window.event;//兼容IE //取消事件相关的默认行为 if(event.preventDefault) //标准技术 event.preventDefault(); if(event.returnValue) //兼容IE9之前的IE event.returnValue=false; return false; //用于处理使用对象属性注册的处理程序}

登录后复制

取消事件相关的默认操作只是事件取消中的一种,我们也能取消事件传播。在支持addEventListener()的浏览器中,可以调用事件对象的stopPropagation()方法以阻止事件的继续传播。如果在同一对象上定义了其他处理程序,剩下的处理程序将依旧被调用,但调用stopPropagation()之后任何其他对象上的事件处理程序将不会被调用。

 IE9之前的IE不支持stopPropagation()方法,而是设置事件对象cancelBubble属性为true来实现阻止事件进一步传播。

好了以上就是小编为大家整理的全部内容啦,希望对大家有所帮助~

相关推荐:

JavaScript实现报警器提示音效果详解

JavaScript优先队列与循环队列实例详解

JavaScript实现三级级联特效实例分享

以上就是JS传播事件、取消事件默认行为、阻止事件传播详解的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2789981.html

(0)
上一篇 2025年3月8日 18:50:04
下一篇 2025年3月7日 08:27:24

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • js实现显示时间日期实例

    本文主要为大家带来一篇js 显示日期时间的实例(时间过一秒加1)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望能帮助到大家。 html: 2017年10月17日 15:11:11登录后复制 js: 1:…

    编程技术 2025年3月8日
    200
  • JS获取子、父、兄节点方法小结

    这篇文章主要介绍了js获取子、父、兄节点方法总结及js获取兄弟节点的两种方法,对js的朋友可以参考下本篇文章 我们在实际的开发中,经常要获取页面中某个html元素,动态更新元素的样式、内容属性等。  我们已经知道在JavaScript中提供…

    编程技术 2025年3月8日
    200
  • 带你快速理解javascript中的事件模型

    这篇文章主要介绍了javascript中的事件模型,其中包括了dom0级事件模型和dom2级事件模型(事件捕获和事件冒泡和dom2级的注册事件和解除事件),对javascript的朋友可以参考下本篇文章 javascript中有两种事件模型…

    2025年3月8日
    200
  • javaScript封装的各种写法

    这篇文章主要介绍了javaScript封装的各种写法,通过列举优缺点和使用场景详细介绍了几种JavaScript封装的格式,对JavaScript的感兴趣朋友可以参考下本篇文章 在javascript的世界里,写法是个神奇的现象,真是百家齐…

    编程技术 2025年3月8日
    200
  • JavaScript模块模式详解

    本文主要介绍了javascript模块模式,结合实例形式详细分析了js模块模式的相关概念、功能、扩展等操作技巧,需要的朋友可以参考下,希望能帮助到大家。 在JS中没有Class的概念,那么如何体现Object的Public和Private属…

    编程技术 2025年3月8日
    200
  • AngularJS获取焦点及失去焦点时的表单验证功能实现方法

    本文主要介绍了angularjs实现的获取焦点及失去焦点时的表单验证功能,涉及angularjs使用ng-blur、ng-focus针对表单事件监听相关操作技巧,需要的朋友可以参考下,希望能帮助到大家。 本文实例讲述了AngularJS实现…

    2025年3月8日
    200
  • html、css、javascript实现楼层跳跃式的页面布局

    本文主要介绍了纯html+css+javascript实现楼层跳跃式的页面布局,需要的朋友可以参考下,希望能帮助到大家。 实现效果演示: 实现代码及注释: nbsp;html> 楼层跳跃式的页面布局   *{ margin: 0; p…

    2025年3月8日
    200
  • NodeJs数据库异常处理解析

    本文主要介绍了浅谈nodejs之数据库异常处理,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望能帮助到大家。 NodeJs版本:4.4.4 数据库链接错误 使用nodejs处理异常最麻烦不过,这里我抛开no…

    编程技术 2025年3月8日
    200
  • 在WebStorm中添加Vue.js单文件组件的高亮及语法支持实例

    本文主要介绍了详解在webstorm中添加vue.js单文件组件的高亮及语法支持,非常具有实用价值,需要的朋友可以参考下,希望能帮助到大家。 本文介绍了详解在WebStorm中添加Vue.js单文件组件的高亮及语法支持,分享给大家,具体如下…

    2025年3月8日
    200
  • 完全掌握AngularJS中$location

    本文主要介绍了angularjs的$location使用方法详解的相关资料,希望通过本文大家能够掌握这部分内容,需要的朋友可以参考下,希望大家可以更好掌握angularjs中$location的使用方法。 AngularJS的$locati…

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论