当前位置: 首页 > 编程笔记 >

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

吕和风
2023-03-14
本文向大家介绍js阻止冒泡和默认事件(默认行为)详解,包括了js阻止冒泡和默认事件(默认行为)详解的使用技巧和注意事项,需要的朋友参考一下

本文实例为大家分享了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; 
} 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍js事件冒泡、事件捕获和阻止默认事件详解,包括了js事件冒泡、事件捕获和阻止默认事件详解的使用技巧和注意事项,需要的朋友参考一下 谈起JavaScript的 事件,事件冒泡、事件捕获、阻止默认事件这三个话题,无论是面试还是在平时的工作中,都很难避免。 1.事件冒泡 先来看一段代码: html代码 你的本意是触发button这个元素,却连同父元素绑定的事件一同触发。这就是事件冒泡。 如

  • 本文向大家介绍js停止冒泡和阻止浏览器默认行为的简单方法,包括了js停止冒泡和阻止浏览器默认行为的简单方法的使用技巧和注意事项,需要的朋友参考一下 停止冒泡通用方法: 阻止浏览器默认行为-通用方法 事件兼容 function myfn(e){ var evt = e ? e:window.event; } js停止冒泡兼容 window.event? window.event.cancelBubb

  • 本文向大家介绍JS阻止事件冒泡行为和闭包的方法,包括了JS阻止事件冒泡行为和闭包的方法的使用技巧和注意事项,需要的朋友参考一下 阻止事件冒泡行为,要是不阻止的话,点击div的时候也会同时触发body事件 html代码 css代码 js代码 以上所述是小编给大家介绍的JS阻止事件冒泡行为和闭包的方法的相关知识,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家

  • 本文向大家介绍在React中怎么阻止事件的默认行为?相关面试题,主要包含被问及在React中怎么阻止事件的默认行为?时的应答技巧和注意事项,需要的朋友参考一下 event.preventDefault();阻止浏览器默认行为, 例如标签不跳转 event.stopPropagation();阻止冒泡; 例如上级点击事件不生效

  • 问题内容: 阻塞VM的整体性能更好,因为同步,线程生成和恢复等待值的阻塞客户端都不会浪费时间。因此,如果您愿意不时接受更高的延迟,则阻塞VM是一个不错的选择。尤其是如果交换很少发生并且大多数经常访问的数据恰好适合您的内存。 这是Redis的默认模式(这是唯一的前进模式,我相信现在2.6中已弃用VM),让OS处理分页(如果需要)。我的理解是正确的,启动/启动将需要一些时间才能变得“热”。当在具有16

  • 问题内容: 在通过单击发送按钮或在一段代码的消息文本字段中按Enter的方法中,我有以下代码。 最后的代码使文本区域空白。但是,通过按Enter键发送消息后,文本框将包含换行符,而不是为空。 我的猜测是,在事件处理程序运行之后,然后添加了换行符。如何停止添加换行符? 问题答案: 致电后尝试添加