如何捕捉页面正文上的点击

how to catch click on page body

本文关键字:正文 何捕捉      更新时间:2023-09-26

我有一个页面,里面有很多div,当有人点击其中一个时,它会调用一个javascript方法。如果有人点击了body,我还需要能够触发另一个方法调用,这意味着他们没有点击div,而是在div之外。当我在body标记上放置jquery点击处理程序时,即使你点击了div,它也会触发。有人知道我如何将点击限制在div之外的任何东西吗?谢谢

您需要检查点击事件的原始目标。它可以作为e.target访问,其中e是单击事件。

var div = document.getElementById('the-div');
document.body.onclick = function (e) {
  var target = e.target;
  while (target !== document.body) {
    if (target === div) {
      // The user clicked inside the div
      return;
    }
    target = target.parentNode;
  }
  // do the stuff you want when they click outside the div here
};

您可以在整个文档上设置onclick回调:

document.onclick = function(){
    alert("CLICK");
};

另请参阅JavaScript事件委派

您可以使整个窗口跟踪单击事件,如果单击div,它将停止事件传播。

<!DOCTYPE html>
<html>
    <head>
        <title></title>
        <style>
            #wrapper {
                position:absolute;
                left:0px;
                top:0px;
                width:100%;
                height:100%;
            }
            #antidiv {
                position:absolute;
                left:40px;
                top:80px;
                width:100px;
                height:100px;
                background-color:#3FF;
            }
        </style>
    </head>
    <body>
        <div id="wrapper">
            <div id="antidiv"></div>

        </div>
        <script>
            document.getElementById("antidiv").addEventListener("click", function(e) {
                e.stopPropagation();
            }, false);
            document.body.addEventListener("click", function(e) {
                alert("You didn't click the div!");
            }, false);


        </script>
    </body>
</html>