Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript onbeforeunload事件异常?_Javascript_Html_Jquery_Onbeforeunload - Fatal编程技术网

Javascript onbeforeunload事件异常?

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();

我想知道是否有一种方法可以使onbeforeunload事件警报在除特定函数引发的页面重新加载之外的任何其他情况下触发

之前回答的大多数问题最多只有3岁

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();
}