所以我已经为此绞尽脑汁了一段时间,但不明白为什么这不起作用。
我正在设置一些简单的功能,以防止用户通过超链接离开页面,而显示覆盖。因此,我在所有链接上都设置了一个简单的事件监听器,当点击它时,它将停止页面加载并启动覆盖。
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>