window.stop方法在函数中使用时似乎不起作用



所以我已经为此绞尽脑汁了一段时间,但不明白为什么这不起作用。

我正在设置一些简单的功能,以防止用户通过超链接离开页面,而显示覆盖。因此,我在所有链接上都设置了一个简单的事件监听器,当点击它时,它将停止页面加载并启动覆盖。

mmClickRecived变量用于脚本的另一部分,只是为了确保用户只看到此覆盖一次。如果用户在页面上不活动一段时间,超时功能将触发相同的覆盖。

然而,当我尝试此代码时,当单击超链接时,覆盖会很好地触发,但页面不会停止加载。我单独尝试了这段代码的各个部分,看起来都很好,不太明白为什么不起作用。有什么想法吗?

$("a").click(function() {
    if (mmClickRecieved === false) {
      if (navigator.appName == "Microsoft Internet Explorer") {
    window.document.execCommand('Stop');
      }
      else {
    window.stop();
      }
       clearTimeout(mmTimeout);
       mmNumberOverlay();
    }
    else {
        // no further action
    }
})

更新:不知道为什么我得了-1。。如果这个问题没有意义,我可以更新

为什么不使用preventDefault?它可以阻止用户关注单击的链接,而是允许您通过单击进行其他操作:

var mmClickRecieved = -1;
$("a").click(function(event){
   // I am using this as an easy way to mimic your value
   if(!(++mmClickRecieved)){
     event.preventDefault();
     mmNumberOverlay();
   }
   // You don't need an else, since the event wont be prevented
})
function mmNumberOverlay(){
  alert("This happens only once!");
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<a href="http://www.google.com">Go to Google (this is not allowd in this snippet)!</a>

最新更新