所以我已经用这种方式绞尽脑汁了一段时间,但无法弄清楚为什么这不起作用。
我设置了一些简单的功能,以防止用户通过超链接离开页面,而是显示叠加层。所以我在所有链接上设置了一个简单的事件监听器,点击它时将停止页面加载并启动叠加层。
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这个...我可以更新问题,如果它没有意义
答案 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>