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

时间:2015-11-02 15:38:12

标签: javascript jquery

所以我已经用这种方式绞尽脑汁了一段时间,但无法弄清楚为什么这不起作用。

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

mmClickRecieved变量用于脚本的另一部分,仅用于确保用户只能看到一次此叠加层。如果用户在页面上处于非活动状态一段时间,则超时功能将触发相同的覆盖。

但是,当我尝试使用此代码时,单击超链接时,叠加层会正常触发,但页面不会停止加载。我已经孤立地尝试了这些代码的各个部分,这一切看起来很好,但是很难弄清楚为什么这不起作用。任何人的想法?

$("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这个...我可以更新问题,如果它没有意义

1 个答案:

答案 0 :(得分: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>