Javascript 如何禁用window.onbeforeunload from<;a>;标签?
首先,我在我的应用程序上使用了Javascript 如何禁用window.onbeforeunload from<;a>;标签?,javascript,jquery,Javascript,Jquery,首先,我在我的应用程序上使用了window.onbeforeunload。它在页面上方工作,但当单击锚定链接时,它应该被禁用。有什么想法吗?请分享。我的代码如下,它不工作: var submitFormOkay = false; window.onbeforeunload = function () { if (!submitFormOkay) { return "Don't delay your Success. Get FREE career counselling
window.onbeforeunload
。它在页面上方工作,但当单击锚定链接时,它应该被禁用
。有什么想法吗?请分享。我的代码如下,它不工作:
var submitFormOkay = false;
window.onbeforeunload = function () {
if (!submitFormOkay) {
return "Don't delay your Success. Get FREE career counselling session. Fill in the details below";
} else {
submitFormOkay = '';
}
}
<a class="navbar-brand" href="http://www.google.com">Click</a>
var submitFormOkay=false;
window.onbeforeunload=函数(){
如果(!submitFormOkay){
return“不要耽误你的成功。获得免费的职业咨询课程。填写以下详细信息”;
}否则{
submitFormOkay='';
}
}
您可以在document.body
上附加一个全局单击处理程序,如果单击通过a
元素,该处理程序将submitFormOkay
设置为true
(或者您可以使用另一个变量绕过检查,或者只需通过将null
赋值给窗口来清除处理程序。onbeforeuload
),例如:
没有jQuery(因为我最初错过了
jQuery
标记):
使用jquery,可以如下所示:
var submitFormOkay = false;
$(window).on('beforeunload',function () {
if (!submitFormOkay) {`enter code here`
return "Don't delay your Success. Get FREE career counselling session. Fill in the details below";
} else {
submitFormOkay = '';
}
})
<a class="navbar-brand" href="http://www.google.com">Click</a>
$('a').on('click',function(e){
e.preventDefault();
$(window).off('beforeunload');
window.location = $(this).attr('href');
});
var submitFormOkay=false;
$(窗口).on('beforeunload',函数(){
如果(!submitFormOkay){`请在此处输入代码`
return“不要耽误你的成功。获得免费的职业咨询课程。填写以下详细信息”;
}否则{
submitFormOkay='';
}
})
$('a')。在('click',函数(e)上{
e、 预防默认值();
$(窗口).off('beforeunload');
window.location=$(this.attr('href');
});
您可以使用onclick功能,在该功能中,您可以禁用它。为什么要在文档中的每个元素之间循环?没有这些开销,你就不能这样做。根据您的code
在每次单击事件中,它都会循环遍历所有元素,并检查元素是否为anchor
。@Mayank:我没有循环遍历文档中的每个元素。当点击发生时,当点击到达body
时,上面的内容将查看点击以z顺序穿过的元素(通常很少,甚至10深都是不寻常的,但1000深仍然不是问题)。假设你有一个div和另一个div,还有一个div和一个段落,其中有一个span和一个em。单击em,它会查看em、span、段落、div、div、div,然后在body处停止。琐碎的,特别是对用户操作(如单击)的响应。是否遍历到父级,直到解决方案真正需要主体?@Mayank:这是标准事件委派。你似乎认为这是低效的或奇怪的;两者都不是。我们将单个处理程序连接到单个元素上,而不是将处理程序附加到文档中的每个锚元素上。如果动态添加新的锚点,而不必在这些新元素上钩住处理程序,那么它就可以工作。等
document.body.addEventListener("click", function(e) {
var element;
for (element = e.target; element != document.body; element = element.parentNode) {
if (element.tagName.toUpperCase() === "A") {
submitFormOkay = true; // Or set another flag you'll check,
// or clear onbeforeunload entirely
break;
}
}
}, false);
var submitFormOkay = false;
$(window).on('beforeunload',function () {
if (!submitFormOkay) {`enter code here`
return "Don't delay your Success. Get FREE career counselling session. Fill in the details below";
} else {
submitFormOkay = '';
}
})
<a class="navbar-brand" href="http://www.google.com">Click</a>
$('a').on('click',function(e){
e.preventDefault();
$(window).off('beforeunload');
window.location = $(this).attr('href');
});