更新
现在,现代浏览器认为显示自定义消息是一种安全隐患,因此已将其从所有浏览器中删除。现在,浏览器仅显示常规消息。由于我们不再需要担心设置消息的问题,因此它很简单:
// Enable navigation promptwindow.onbeforeunload = function() { return true;};// Remove navigation promptwindow.onbeforeunload = null;
阅读以下内容以获取旧版浏览器支持。
更新
原始答案适用于IE6-8和FX1-3.5(这是我们在2009年编写时所针对的目标),但是现在已经过时了,在大多数当前的浏览器中都无法使用-我已经离开了下面以供参考。
在
window.onbeforeunload所有浏览器都没有一致的处理。它应该是函数引用,而不是字符串(如原始答案所述),但是它将在较旧的浏览器中工作,因为对大多数浏览器的检查似乎是是否已分配了任何内容
onbeforeunload(包括返回的函数
null)。
您设置
window.onbeforeunload为函数引用,但是在较旧的浏览器中,您必须设置
returnValue事件的,而不仅仅是返回字符串:
var confirmOnPageExit = function (e) { // If we haven't been passed the event get the window.event e = e || window.event; var message = 'Any text will block the navigation and display a prompt'; // For IE6-8 and Firefox prior to version 4 if (e) { e.returnValue = message; } // For Chrome, Safari, IE8+ and Opera 12+ return message;};
/confirm/iOnPageExit如果您希望用户继续 *** 作而不收到消息,则无法进行检查并返回null。您仍然需要删除事件以可靠地打开和关闭该事件:
// Turn it on - assign the function that returns the stringwindow.onbeforeunload = /confirm/iOnPageExit;// Turn it off - remove the function entirelywindow.onbeforeunload = null;
原始答案
打开它:
window.onbeforeunload = "Are you sure you want to leave?";
要将其关闭:
window.onbeforeunload = null;
请记住,这不是正常事件-您无法以标准方式绑定到该事件。
要检查值?这取决于您的验证框架。
在jQuery中,可能类似于(非常基本的示例):
$('input').change(function() { if( $(this).val() != "" ) window.onbeforeunload = "Are you sure you want to leave?";});
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)