Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/479.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 如何知道window.onbeforeunload的返回_Javascript - Fatal编程技术网

Javascript 如何知道window.onbeforeunload的返回

Javascript 如何知道window.onbeforeunload的返回,javascript,Javascript,我有一个JS函数window.onbeforeunload,它返回一个消息,浏览器在confirbox中显示。现在,我如何知道用户单击是离开该页面还是停留在该页面上 Javascript window.onbeforeunload = function(e) { return "Click STAY ON PAGE then SAVE to save any data you've entered.\n If you've already SAVED select LEAVE PAGE to

我有一个JS函数window.onbeforeunload,它返回一个消息,浏览器在confirbox中显示。现在,我如何知道用户单击是离开该页面还是停留在该页面上

Javascript

window.onbeforeunload = function(e) {
 return "Click STAY ON PAGE then SAVE to save any data you've entered.\n If you've already SAVED select LEAVE PAGE to continue."; 
}

无论如何都要更新变量。如果他们留下来,你会得到你想要的;如果他们走了,那没关系

window.onbeforeunload = function(e) {
   var myVariable = 'updated value'; // of course, var not from this scope
   return "Click STAY ON PAGE then SAVE to save any data you've entered.\n If you've already SAVED select LEAVE PAGE to continue."; 
}

查看尝试离开后x发生的情况:

实现此功能的交叉浏览器代码:

    (function() {
        function beforeUnload(event) {
            event = event || window.event;

            var confirmationMessage = 'Changes not saved';

            event.returnValue = confirmationMessage;
            return confirmationMessage;
        }

        window.addEventListener('beforeunload', beforeUnload, false);
    })();

这就是工作原理。当触发beforeUnload时,用户将获得带有2个按钮的确认框离开此页面并停留在此页面上。当用户按“离开此页面”->“选项卡”将关闭。但当用户单击“保持在此页面上”时->不会发生任何事情,用户不会丢失数据。

如果用户不再在该页面上,则有可能会留下这些数据。@Shomz但如果他们保持不变,我需要更改变量的值。我该怎么做?如果他们确认离开,onunload将不会被呼叫。@AdrianoRepetti我不担心他们离开页面。我担心他们是否会留下来。我需要更新一个变量。不管怎么说,你真的不能这么做。您可以设置一个超时函数,请参见[this][1][1]:这与OP最初的设置非常相似。1。如果事件未定义,则最好从window.event获取事件。2.如果return不起作用,那么需要添加event.returnValue,这样就可以了。当然,这几乎是一样的,但它包含了一些更好的改进。