Javascript onbeforeunload事件异常?
我想知道是否有一种方法可以使onbeforeunload事件警报在除特定函数引发的页面重新加载之外的任何其他情况下触发 之前回答的大多数问题最多只有3岁Javascript onbeforeunload事件异常?,javascript,html,jquery,onbeforeunload,Javascript,Html,Jquery,Onbeforeunload,我想知道是否有一种方法可以使onbeforeunload事件警报在除特定函数引发的页面重新加载之外的任何其他情况下触发 之前回答的大多数问题最多只有3岁 window.addEventListener('beforeunload',函数(e){ e、 预防默认值(); e、 返回值=“”; }); document.getElementById(“重载”).addEventListener(“单击”,myFunction); 函数myFunction(){ location.reload();
window.addEventListener('beforeunload',函数(e){
e、 预防默认值();
e、 返回值=“”;
});
document.getElementById(“重载”).addEventListener(“单击”,myFunction);
函数myFunction(){
location.reload();
}//我想从ONBEFOREUNLOAD事件警报中排除此函数
从此处重新加载不应触发ONBEFOREUNLOAD警报
一个简单的解决方案是设置一个标志,并在beforeunload侦听器中检查该标志:
let beforeUnloadAlert = true;
window.addEventListener('beforeunload', function (e) {
if (!beforeUnloadAlert) return;
// etc
e.preventDefault();
e.returnValue = '';
});
另一种方法是在调用.reload
之前删除侦听器,方法是将侦听器放入命名函数中:
window.addEventListener('beforeunload', unloadHandler);
window.addEventListener('beforeunload', unloadHandler);
function myFunction() {
window.removeEventListener('beforeunload', unloadHandler);
location.reload();
}