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 相关文章推荐
css值转换成数值请抛弃parseInt
Oct 24 Javascript
自己封装的常用javascript函数分享
Jan 07 Javascript
jquery实现的Accordion折叠面板效果代码
Sep 02 Javascript
JS模拟按钮点击功能的方法
Dec 22 Javascript
理解javascript中try...catch...finally
Dec 25 Javascript
详解iframe与frame的区别
Jan 13 Javascript
JS调用Android、Ios原生控件
Jan 06 Javascript
微信小程序 高德地图SDK详解及简单实例(源码下载)
Jan 11 Javascript
Vue.js之slot深度复制详解
Mar 10 Javascript
理顺8个版本vue的区别(小结)
Sep 17 Javascript
vue中axios请求的封装实例代码
Mar 23 Javascript
Vue中消息横向滚动时setInterval清不掉的问题及解决方法
Aug 23 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中常量DIRECTORY_SEPARATOR用法深入分析
2014/11/14 PHP
php 类中的常量、静态属性、非静态属性的区别
2017/04/09 PHP
一文掌握PHP Xdebug 本地与远程调试(小结)
2019/04/23 PHP
让浏览器非阻塞加载javascript的几种方法小结
2011/04/25 Javascript
js倒计时小程序
2013/11/05 Javascript
javascript实现的一个随机点名功能
2014/08/26 Javascript
关于Javascript加载执行优化的研究报告
2014/12/16 Javascript
模拟javascript中的sort排序(简单实例)
2016/08/17 Javascript
JS创建对象的写法示例
2016/11/04 Javascript
js与jquery分别实现tab标签页功能的方法
2016/11/18 Javascript
微信小程序 表单Form实例详解(附源码)
2016/12/22 Javascript
jQuery幻灯片插件owlcarousel参数说明中文文档
2018/02/27 jQuery
js中arguments对象的深入理解
2019/05/14 Javascript
使用vuex较为优雅的实现一个购物车功能的示例代码
2019/12/09 Javascript
微信小程序实现同时上传多张图片
2020/02/03 Javascript
Python设计模式编程中解释器模式的简单程序示例分享
2016/03/02 Python
Python的shutil模块中文件的复制操作函数详解
2016/07/05 Python
深入解答关于Python的11道基本面试题
2017/04/01 Python
Python Numpy库datetime类型的处理详解
2019/07/13 Python
python多进程重复加载的解决方式
2019/12/13 Python
pandas中read_csv的缺失值处理方式
2019/12/19 Python
python Popen 获取输出,等待运行完成示例
2019/12/30 Python
python文件处理fileinput使用方法详解
2020/01/02 Python
python实现实时视频流播放代码实例
2020/01/11 Python
python GUI计算器的实现
2020/10/09 Python
CSS3地图动态实例代码(圆圈向外扩散)
2018/06/15 HTML / CSS
实例讲解使用HTML5 Canvas绘制阴影效果的方法
2016/03/25 HTML / CSS
MyFrenchPharma中文网:最大的法国药妆平台
2016/10/07 全球购物
简述索引存取方法的作用和建立索引的原则
2013/03/26 面试题
母婴店促销方案
2014/03/05 职场文书
12岁生日演讲稿
2014/05/14 职场文书
2014国庆节主题活动方案:快乐的国庆节
2014/09/16 职场文书
房产授权委托书范本
2014/09/22 职场文书
小学生交通安全寄语
2015/02/27 职场文书
小学推普周活动总结
2015/05/07 职场文书
美甲店的创业计划书模板
2019/08/23 职场文书