Javascript Mozilla firefox无法使用window.onbeforeunload
我使用的是Javascript Mozilla firefox无法使用window.onbeforeunload,javascript,jquery,firefox,dom-events,onbeforeunload,Javascript,Jquery,Firefox,Dom Events,Onbeforeunload,我使用的是window.onbeforeunload在windows关闭时向用户显示消息,该功能在Chrome和IE上运行良好,但在Firefox上不起作用,我使用的是Firefox版本26.0我尝试过很多次,但都没有意义,有人说这是Firefox中的一个bug,还有人建议一些解决方案,我尝试了所有可用的Javascript和jQuery解决方案,但都不起作用,现在我显示一个确认对话框,但浏览器默认对话框出现在它之后,我对此不满意,我还尝试使用preventDefault()阻止浏览器默认对话框
window.onbeforeunload
在windows关闭时向用户显示消息,该功能在Chrome和IE上运行良好,但在Firefox上不起作用,我使用的是Firefox版本26.0
我尝试过很多次,但都没有意义,有人说这是Firefox中的一个bug,还有人建议一些解决方案,我尝试了所有可用的Javascript和jQuery解决方案,但都不起作用,现在我显示一个确认对话框,但浏览器默认对话框出现在它之后,我对此不满意,我还尝试使用preventDefault()
阻止浏览器默认对话框出现,但也毫无意义!如果有任何解决此问题的方法,那就太好了,下面是我如何使用窗口。onbeforeunload
:
<script>
window.onbeforeunload = confirmWinClose();
function confirmWinClose() {
var myVar ='${isFireFox}';
if(myVar=='true'){
return confirm(confirmExamClose);
}else{
return confirmExamClose;
}
}
<script>
window.onbeforeunload=confirmWinClose();
函数confirmWinClose(){
var myVar='${isFireFox}';
如果(myVar=='true'){
返回确认(confirmExamClose);
}否则{
返回confirmExamClose;
}
}
注意:
isFireFox
是一个jsp变量,我使用User Agent
头知道浏览器的类型,confirmExamClose
是我向用户显示的消息。为什么在这里进行浏览器嗅探?代码的“Firefox”分支正在返回窗口的返回值。请确认,这是一个布尔值。但是布尔值是不可调用的,因此将其分配给window.onbeforeunload
与分配null相同
您可能要做的是删除浏览器嗅探,然后执行以下操作:
window.onbeforeunload = confirmExamClose;
以下是Firefox和Chrome的有效解决方案。我还没考过狩猎和歌剧
var myEvent = window.attachEvent || window.addEventListener;
var chkevent = window.attachEvent ? 'onbeforeunload' : 'beforeunload'; /// make IE7, IE8 compitable
myEvent(chkevent, function(e) { // For >=IE7, Chrome, Firefox
var confirmationMessage = 'Are you sure to leave the page?';
(e || window.event).returnValue = confirmationMessage;
return confirmationMessage;
});
我花了2天的时间寻找Firefoxonbeforeunload
解决方案,但运气不佳,所以我为此付出了努力,并用了一点小技巧
在我的技巧中,用户至少需要单击浏览器窗口一次。
如果用户单击窗口,然后单击“上一步”按钮,刷新页面,或尝试退出页面,onbeforeunload
事件将触发
$(窗口).on('beforeunload',函数(){
return“是否确实要退出此页面?”;
});
$(窗口)。一('单击',函数(){
警报(“hi”);
$('.javavoid').trigger('click');
});代码>
.hide{display:none;}
欢迎,单击任意位置,然后单击“上一步”按钮或刷新页面
在firefox/chrome/IE11中使用MDN中给出的代码对我很有效(目前还没有尝试其他浏览器)
以下是文档:运行处理程序工作正常。不再允许使用beforeunload处理程序设置对话框(除了返回false),因为有太多的网站滥用了该功能。尽管这一功能有效,但firefox上不会显示确认消息。去寻找这样做的方法…这是firfox行为@Jim,firefox不允许显示自定义消息。@faisale我不想显示确认消息,我怎么能做到这一点?我不明白,上面的代码是显示确认消息,如果你不想显示,那么在html中注释掉上面的代码。
window.onbeforeunload = function (e) {
var e = e || window.event;
// For IE and Firefox
if (e) {
e.returnValue = 'Any string';
}
// For Safari
return 'Any string';
};