解决 Is it possible to display a custom message in the beforeunload popup?
原始问题
我正在使用Firefox ESR 45.3.0,并且我已经编写了一个小测试页:
<html>
<body>
<script type="text/javascript">
window.onbeforeunload = function() {return "foo"};
</script>
<p>content</p>
</body>
</html>
错误行为:
正确行为:
我还玩过控制台(开发者工具),尝试将焦点设置在窗口或正文上,如果不点击页面仍然无法正常工作。 我的原始问题页面更长,而不是7.你也可以通过鼠标滚轮滚动页面,这也是#34;激活&#34; onbeforeunload处理程序。
奇怪,看起来像是一个Firefox的bug,你有没有提示如何处理这个问题?
此致 贡纳尔
更新1
使用e.returnValue无法解决问题,我已在上面显示的测试页面中对其进行了测试。
测试页面非常简单,原始问题页面中的原始javascript代码是从其他一些问题/答案中复制而来的,如
function checkModelChanged(modelChanged, confirmText)
{
if (modelChanged === true)
{
var myEvent = window.attachEvent || window.addEventListener;
var chkevent = window.attachEvent ? 'onbeforeunload' : 'beforeunload'; /// make IE7, IE8 compitable
myEvent(chkevent, function(e) { // For >=IE7, Chrome, Firefox
(e || window.event).returnValue = confirmText;
return confirmText;
});
}
}
更新2
测试页在Chrome 52.0.2743.116 m和Edge 38.14393.0.0(EdgeHTML 14.14393)中按预期工作。浏览器返回没有&#34;窗口交互&#34;显示确认对话框。
原始问题页面是Liferay Portlet(JSF 2.2和Primefaces 5.3)的一部分,我已经尝试过javascript的scollIntoView和jQuery的动画(scrollTop)或触发器(点击)。