关于javascript:js阻止冒泡和默认事件默认行为详解

41次阅读

共计 1383 个字符,预计需要花费 4 分钟才能阅读完成。

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

正文完
 0