2017-03-17 93 views
-2

编辑:这个问题是不同的,因为我要求在2017年浏览器的解决方案。另一个问题与多年前的浏览器有关。也没有解决办法。必须有某种解决办法,这就是我所要求的。的Html - beforeunload - 跨浏览器

我添加一个事件监听器:

addEventListener("beforeunload", MyBeforeUnload, false); 

我有功能:

function MyBeforeUnload() { 
    if(!g_IsSaved) { 
     return "You have not saved your data. If you leave this page without saving, your data will be lost."; 
    }else { 
    // Do not return anything if ok to leave 
    } 
} 

这触发并显示在IE中的警告消息。

它触发功能,正确返回字符串,但在Chrome中,边缘或Firefox浏览器右上角的关闭与[x]按钮浏览器的时候不火的警告消息。

是否有可能获得2017年这方面的工作的跨浏览器?

+1

什么都没有改变。另请参见http://stackoverflow.com/q/11317573/215552,http://stackoverflow.com/q/4683221/215552,http://stackoverflow.com/q/38879742/215552,HTTP://计算器。 com/q/1921941/215552 –

+0

迈克的第二条评论中的第一个链接有一个特别好的答案,为什么这是不可能的。 – BSMP

+0

问题是一样的,即使答案改变了。我们想要更新现有问题的答案(如果它们可以更新),而不是产生问题的新副本。 –

回答

0

尝试使用它就像它应该在跨浏览器的工作

window.addEventListener("beforeunload", function(e) { 
    var confirmationMessage = "You have not saved your data. If you leave this page without saving, your data will be lost."; 

    if (!g_IsSaved) { 
     (e || window.event).returnValue = confirmationMessage; //Gecko + IE 
     return confirmationMessage; //Webkit, Safari, Chrome etc. 
    } else { 
     // Do not return anything if ok to leave 
    } 
}); 


而Chrome已经决定取消在onbeforeunload对话框中设置的自定义消息,以避免欺骗活动的能力

从2016年2月18日起,请参见bug report.

onbeforeunload对话框用于第2在现代网上发现:
1.防止用户无意中丢失数据。
2.欺诈用户。自上次几次这个被问

+0

感谢您的想法,但这似乎停止即使IE浏览器工作。 – Rewind

+1

的Chrome已经决定取消在'onbeforeunload'对话框中设置的自定义消息,以避免欺骗活动和防止用户不小心丢失数据的能力。 –