卸载前打开Javascript函数

siotufzp  于 2023-01-11  发布在  Java
关注(0)|答案(2)|浏览(109)

我尝试在onbeforeunload事件上调用这个确认函数,但是它没有被调用。我错过了什么?
我把这个叫做身体内部标签:

<body onbeforeunload="confirmation();">

我也试过:

<body onbeforeunload="return confirmation();">

代码:

function confirmation(){
  var answer = confirm('You have unsaved changes!!');
   if(answer == true)
    {
     alert('Bye Bye!!!');
    }
    else{
      alert('You are staying');
     return false;
    }
   }
s4n0splo

s4n0splo1#

这与onbeforeunload的工作原理完全不同,并且代码包含语法错误。

window.onbeforeunload = function (e)
{
    var e = e || window.event,
        message = 'You have unsaved changes!!';

    // For IE and Firefox prior to version 4
    if (e)
    {
        e.returnValue = message;
    }

    return message;
}
5fjcxozz

5fjcxozz2#

当用户在你的页面上做了更改,而如果他离开页面,这些更改将不会被保存时,你试图要求用户确认。对吗?
如果是这样,那么似乎是可能的。在SO上尝试以下方法。开始写这个问题的答案,然后尝试关闭浏览器窗口。
我在Chrome 12、FF 4.0.1和IE 9中进行了测试。
所有3个浏览器都显示了一个弹出窗口。似乎它们都包含了一个自定义文本。Chrome显示了“最干净”的消息,这意味着一个只有自定义消息和2个按钮的弹出窗口。
在所有3个浏览器试图关闭浏览器以任何 * 正常 * 的方式触发一个弹出窗口,让用户选择,如果他可能不想留在页面上,完成他开始的事情。如果他不想离开,他可以。(杀死浏览器进程或计算机关机可能不会做你想thoug:))。
Internet浏览器:

火狐浏览器:

chrome :

我会尝试挂接一个函数,该函数向window.onbeforeunload事件返回一个字符串。

<script>
window.onbeforeunload = function (evt) {
  var message = 'You have started writing or editing a post.';
  if (typeof evt == 'undefined') {
    evt = window.event;
  }
  if (evt) {
    evt.returnValue = message;
  }
  return message;
}
</script>

相关问题