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


Posted in Javascript onOctober 20, 2016

本文实例为大家分享了js阻止冒泡默认事件方法,供大家参考,具体内容如下

阻止冒泡。冒泡简单的举例来说,儿子知道了一个秘密消息,它告诉了爸爸,爸爸知道了又告诉了爷爷,一级级传递从而引起事件的混乱,而阻止冒泡就是不让儿子告诉爸爸,爸爸自然不会告诉爷爷了。下面的domo就是很好的例子。

<!DOCTYPE html> 
<html> 
 
  <head> 
    <meta charset="UTF-8"> 
    <title></title> 
    <style type="text/css"> 
      #box { 
        width: 300px; 
        height: 300px; 
        background: red; 
        display: none; 
      } 
    </style> 
    <script type="text/javascript"> 
      window.onload = function() { 
          var btn = document.getElementById('btn'); 
          var box = document.getElementById('box'); 
          btn.onclick = function(ev) { 
            var oEvent = ev || event; 
            box.style.display = 'block'; 
            //oEvent.cancelBubble = true;//高版本浏览器 
            stopBubble(oEvent); 
            //在低版本的chrome和firefox浏览器中需要兼容性处理 
            //高版本chrome和firefox浏览器直接使用上面这行代码即可 
          } 
          document.onclick = function() { 
            box.style.display = 'none'; 
          } 
 
        } 
        //阻止冒泡事件的兼容性处理 
      function stopBubble(e) { 
        if(e && e.stopPropagation) { //非IE 
          e.stopPropagation(); 
        } else { //IE 
          window.event.cancelBubble = true; 
        } 
      } 
    </script> 
  </head> 
 
  <body> 
    <input type="button" id="btn" value="语言" /> 
    <div id="box"></div> 
  </body> 
 
</html>

我所实现的效果是:点击按钮btn让box显示,而点击其他地方则让box消失。
如果我不阻止冒泡的话,那么首先btn会触发点击时间,让盒子显示,但是由于box是包含在document中的,所以会向上冒泡又触发document的点击事件,盒子又消失。这个事件的执行顺序可以在不同的点击事件中使用alert来验证。关于cancelBubble的兼容性处理在高版本的chrome和firefox中已经不需要兼容处理了,直接使用oEvent.cancelBubble = true 即可。下面的阻止浏览器事件的兼容性处理在高版本浏览器中同样不需要。

默认事件。即浏览器本身具备的功能。

function preventDefa(e){ 
  if(window.event){ 
    //IE中阻止函数器默认动作的方式  
    window.event.returnValue = false;  
  } 
  else{ 
    //阻止默认浏览器动作(W3C)  
    e.preventDefault(); 
  }  
}

这种是兼容性写法,但是如果你只需要支持高版本浏览器的话,那么如上文一样,一句话即可。

btn.onclick = function (){ 
  return false; 
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
有关于eclipse配置spket需要注意的一些地方
Apr 07 Javascript
javascript阻止scroll事件多次执行的思路及实现
Nov 08 Javascript
父页面显示遮罩层弹出半透明状态的dialog
Mar 04 Javascript
基于javascript实现彩票随机数生成(简单版)
Apr 17 Javascript
JS把内容动态插入到DIV的实现方法
Jul 19 Javascript
AngularJS constant和value区别详解
Feb 28 Javascript
Angular2实现自定义双向绑定属性
Mar 22 Javascript
详谈表单格式化插件jquery.serializeJSON
Jun 23 jQuery
微信小程序开发之好友列表字母列表跳转对应位置
Sep 26 Javascript
深入理解Angular4订阅(Subscribe)与取消
Nov 22 Javascript
微信小程序实现预览图片功能
Oct 22 Javascript
浅谈Vue 性能优化之深挖数组
Dec 11 Javascript
浅谈JS中String()与 .toString()的区别
Oct 20 #Javascript
详解javascript事件绑定使用方法
Oct 20 #Javascript
angular源码学习第一篇 setupModuleLoader方法
Oct 20 #Javascript
jQuery动态创建元素以及追加节点的实现方法
Oct 20 #Javascript
JS中动态创建元素的三种方法总结(推荐)
Oct 20 #Javascript
yarn与npm的命令行小结
Oct 20 #Javascript
Bootstrap 网站实例之单页营销网站
Oct 20 #Javascript
You might like
PHP中的CMS的涵义
2007/03/11 PHP
PHP引用(&amp;)各种使用方法实例详解
2014/03/20 PHP
PHP中使用Imagick操作PSD文件实例
2015/01/26 PHP
PHP设计模式之单例模式原理与实现方法分析
2018/04/25 PHP
如何制作浮动广告 JavaScript制作浮动广告代码
2012/12/30 Javascript
JQuery跳出each循环的方法
2015/04/16 Javascript
jquery实现左右无缝轮播图
2020/07/31 Javascript
JS函数的定义与调用方法推荐
2016/05/12 Javascript
js阻止浏览器默认行为触发的通用方法(推荐)
2016/05/15 Javascript
jQuery中slidedown与slideup方法用法示例
2016/09/16 Javascript
Vue.js第四天学习笔记(组件)
2016/12/02 Javascript
Vue.js仿Metronic高级表格(一)静态设计
2017/04/17 Javascript
Jquery EasyUI $.Parser
2017/06/02 jQuery
JavaScript笛卡尔积超简单实现算法示例
2018/07/30 Javascript
将Vue组件库更换为按需加载的方法步骤
2020/05/06 Javascript
jQuery 常用特效实例小结【显示与隐藏、淡入淡出、滑动、动画等】
2020/05/19 jQuery
antd的select下拉框因为数据量太大造成卡顿的解决方式
2020/10/31 Javascript
python映射列表实例分析
2015/01/26 Python
使用python检测主机存活端口及检查存活主机
2015/10/12 Python
浅谈Python中函数的参数传递
2016/06/21 Python
python实现求最长回文子串长度
2018/01/22 Python
PyQt5每天必学之日历控件QCalendarWidget
2018/04/19 Python
Python之虚拟环境virtualenv,pipreqs生成项目依赖第三方包的方法
2019/07/23 Python
Python叠加矩形框图层2种方法及效果
2020/06/18 Python
荷兰鞋子在线:Nelson Schoenen
2017/12/25 全球购物
Myprotein瑞士官方网站:运动营养和健身网上商店
2019/09/25 全球购物
SmartBuyGlasses荷兰:购买太阳镜和眼镜
2020/03/16 全球购物
荷兰天然和有机产品网上商城:BigGreenSmile.nl
2020/07/26 全球购物
临床医学专业个人的自我评价
2013/09/27 职场文书
党的群众路线学习笔记
2014/11/06 职场文书
2014年学校党建工作总结
2014/11/11 职场文书
2015年推普周活动总结
2015/03/27 职场文书
中学推普周活动总结
2015/05/07 职场文书
给老师的保证书怎么写
2015/05/09 职场文书
消防安全培训工作总结
2015/10/23 职场文书
Mysql Show Profile
2021/04/05 MySQL