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 相关文章推荐
Javascript 键盘keyCode键码值表
Dec 24 Javascript
JavaScript 拾碎[三] 使用className属性
Oct 16 Javascript
JavaScript模板入门介绍
Sep 26 Javascript
JavaScript拆分字符串时产生空字符的解决方案
Sep 26 Javascript
jQuery中empty()方法用法实例
Jan 16 Javascript
jQuery学习笔记之基础中的基础
Jan 19 Javascript
jQuery基于xml格式数据实现模糊查询及分页功能的方法
Dec 25 Javascript
jQuery图片拖动组件Dropzone用法示例
Jan 17 Javascript
Web纯前端“旭日图”实现元素周期表
Mar 10 Javascript
解决layer图标icon不加载的问题
Sep 04 Javascript
解决layer.open后laydate失效的问题
Sep 06 Javascript
详解vuejs中执行npm run dev出现页面cannot GET/问题
Apr 26 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中extract()函数的妙用分析
2012/07/11 PHP
php中3种方法统计字符串中每种字符的个数并排序
2012/08/27 PHP
thinkphp 手机号和用户名同时登录
2017/01/20 PHP
JavaScript 不只是脚本
2007/05/30 Javascript
常用Extjs工具:Extjs.util.Format使用方法
2012/03/22 Javascript
location对象的属性和方法应用(解析URL)
2013/04/12 Javascript
javascript实现的闭包简单实例
2015/07/17 Javascript
JS获取月份最后天数、最大天数与某日周数的方法
2015/12/08 Javascript
AngularJS基础 ng-mouseenter 指令示例代码
2016/08/02 Javascript
jquery实现超简单的瀑布流布局【推荐】
2017/03/08 Javascript
javascript定时器取消定时器及优化方法
2017/07/08 Javascript
使用 Node.js 模拟滑动拼图验证码操作的示例代码
2017/11/02 Javascript
vue中实现图片和文件上传的示例代码
2018/03/16 Javascript
jquery实现的简单轮播图功能【适合新手】
2018/08/17 jQuery
layer弹出层 iframe层去掉滚动条的实例代码
2018/08/17 Javascript
Mint-UI时间组件起始时间问题及时间插件使用
2018/08/20 Javascript
bootstrap下拉分页样式 带跳转页码
2018/12/29 Javascript
在LayUI图片上传中,解决由跨域问题引起的请求接口错误的方法
2019/09/24 Javascript
[48:12]Secret vs Optic Supermajor 胜者组 BO3 第三场 6.4
2018/06/05 DOTA
Windows和Linux下使用Python访问SqlServer的方法介绍
2015/03/10 Python
python实现JAVA源代码从ANSI到UTF-8的批量转换方法
2015/08/10 Python
Tensorflow 实现释放内存
2020/02/03 Python
python属于解释型语言么
2020/06/15 Python
Python venv虚拟环境配置过程解析
2020/07/08 Python
美国知名奢侈美容品牌零售商:Cos Bar
2017/04/21 全球购物
瑞典多品牌连锁店:Johnells
2021/01/13 全球购物
致长跑运动员广播稿
2014/01/31 职场文书
商场促销活动方案
2014/02/08 职场文书
会计与出纳自荐书范文
2014/03/16 职场文书
学校社会实践活动总结
2014/07/03 职场文书
房屋买卖协议样本
2014/11/16 职场文书
2014年煤矿工作总结
2014/11/24 职场文书
2014年项目工作总结
2014/11/24 职场文书
新教师个人工作总结
2015/02/06 职场文书
食品安全责任书范本
2015/05/09 职场文书
初一数学教学反思
2016/02/17 职场文书