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中节点的最近的相关节点访问方法
Mar 20 Javascript
jquery 利用show和hidden实现级联菜单示例代码
Aug 09 Javascript
Javascript 按位取反运算符 (~)
Feb 04 Javascript
浅析JavaScript中的变量复制、参数传递和作用域链
Jan 13 Javascript
Bootstrap导航简单实现代码
Mar 06 Javascript
Angularjs根据json文件动态生成路由状态的实现方法
Apr 17 Javascript
jQuery选择器中的特殊符号处理方法
Sep 08 jQuery
phantomjs导出html到pdf的方法总结
Oct 19 Javascript
vue+element导航栏高亮显示的解决方式
Nov 12 Javascript
微信小程序实现录音功能
Nov 22 Javascript
vue学习笔记之给组件绑定原生事件操作示例
Feb 27 Javascript
原生JS实现弹幕效果的简单操作指南
Nov 10 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实现的验证码文件类实例
2015/06/18 PHP
php获取服务器操作系统相关信息的方法
2016/10/08 PHP
php基于curl重写file_get_contents函数实例
2016/11/08 PHP
tp5 实现列表数据根据状态排序
2019/10/18 PHP
CutePsWheel javascript libary 控制输入文本框为可使用滚轮控制的js库
2010/02/07 Javascript
javascript学习笔记(十四) window对象使用介绍
2012/06/20 Javascript
NODE.JS加密模块CRYPTO常用方法介绍
2014/06/05 Javascript
javascript二维数组转置实例
2015/01/22 Javascript
javascript强制点击广告的方法
2015/02/06 Javascript
基于jQuery滑动杆实现购买日期选择效果
2015/09/15 Javascript
AngularJS基础 ng-hide 指令用法及示例代码
2016/08/01 Javascript
基于JS实现二维码图片固定在右下角某处并跟随滚动条滚动
2017/02/08 Javascript
关于jQuery EasyUI 中刷新Tab选项卡后一个页面变形的解决方法
2017/03/02 Javascript
AngularJS动态添加数据并删除的实例
2018/02/27 Javascript
微信小程序实现手指触摸画板
2018/07/09 Javascript
vue实现短信验证码输入框
2020/04/17 Javascript
如何手写简易的 Vue Router
2020/10/10 Javascript
[01:00]一分钟回顾2018DOTA2亚洲邀请赛现场活动
2018/04/07 DOTA
解决python3 Pycharm上连接数据库时报错的问题
2018/12/03 Python
python实现切割url得到域名、协议、主机名等各个字段的例子
2019/07/25 Python
Python Opencv中用compareHist函数进行直方图比较对比图片
2020/04/07 Python
python文件及目录操作代码汇总
2020/07/08 Python
如何用Python 实现全连接神经网络(Multi-layer Perceptron)
2020/10/15 Python
Python中使用aiohttp模拟服务器出现错误问题及解决方法
2020/10/31 Python
CSS3圆角和渐变2种常用功能详解
2016/01/06 HTML / CSS
TripAdvisor德国:全球领先的旅游网站
2017/12/07 全球购物
KARATOV珠宝在线商店:俄罗斯珠宝品牌
2019/03/13 全球购物
豪华床上用品 :Jennifer Adams
2019/09/15 全球购物
华为消费者德国官方网站:HUAWEI德国
2020/11/03 全球购物
巴西最大的运动品牌:Olympikus
2020/07/14 全球购物
代理班主任的自我评价
2014/02/04 职场文书
《最可爱的人》教学反思
2014/02/14 职场文书
职业规划实施方案
2014/06/10 职场文书
创先争优活动个人总结
2015/03/04 职场文书
2016大学生就业指导课心得体会
2016/01/15 职场文书
2016先进工作者事迹材料
2016/02/25 职场文书