Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.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_Javascript Events - Fatal编程技术网

Javascript onbeforeunload在用户单击某个内容时会弹出一个警报框

Javascript onbeforeunload在用户单击某个内容时会弹出一个警报框,javascript,javascript-events,Javascript,Javascript Events,我创建了一个页面,当用户单击窗口上的(关闭x)按钮时会发出警告。我读了一些书,发现javascript有一个名为onbeforeonload的函数,可以完成我试图实现的任务。然而,在我的实现之后,我发现,当用户单击我窗口中的任何内容(例如.save and enter)时,对话框会重新出现。我想知道为什么我只能瞄准窗口中的特定X按钮 window.onbeforeunload = function (evt) { var message = 'Do you want to leave

我创建了一个页面,当用户单击窗口上的(关闭x)按钮时会发出警告。我读了一些书,发现javascript有一个名为onbeforeonload的函数,可以完成我试图实现的任务。然而,在我的实现之后,我发现,当用户单击我窗口中的任何内容(例如.save and enter)时,对话框会重新出现。我想知道为什么我只能瞄准窗口中的特定X按钮

    window.onbeforeunload = function (evt) {
  var message = 'Do you want to leave?';
  if (typeof evt == 'undefined') {
    evt = window.event;
  }
  if (evt) {
    evt.returnValue = message;
  }
  return message;
} 

现在正在全局调用该函数。。。此资源可能会帮助您实现所需目标:

这是IE的“按预期工作”行为。锚定标记单击,无论是否导航,都将触发

这是我使用的解决方法-我不确定这是否是最好的方法:

document.onmouseup = function () {
    if (window.event.srcElement.tagName === 'A') {
        // turn off your onbeforeunload handler
        ...

        // some small time later, turn it back on
        setTimeout(..., 200);
    }
};

如果你澄清这个问题会有帮助的。参见