onBeforeUnload自定义按钮消息

我有以下beforeunloadfunction,我从其他地方偷了….

$().ready(function() { $("#posManagerLoginForm").trigger("submit"); $(window).bind("beforeunload", function(){ window.setTimeout(function () { window.location = "home.htm"; }, 0); window.onbeforeunload = null; // necessary to prevent infinite loop that kills your browser return "Press 'Stay On Page' to go to Reporting Manager home"; }); }); 

无论我选择哪个选项,我都会导航到home.htm。 有没有办法让对话框成为ok按钮,而不是默认的“Leave Page”或“Stay on page”选项?

或者也许其他人可以提出热点建议以便更好地处理?

谢谢

您无法覆盖onbeforeunload对话框的样式。 相信我,我在之前的项目中尝试过这个。

参考: http : //msdn.microsoft.com/en-us/library/ms536907%28VS.85%29.aspx

它内置于浏览器对象中,您无法控制它。

但是,您可以设置自己的对话框以显示onbeforeunload事件何时触发,但不会禁用常规事件将显示的对话框。 相当烦人,是的。

你仍然被重定向的原因是因为你实际上没有做任何事情来阻止它。

如果要在提交表单之前打开警告框,请确保阻止默认行为(即提交表单),然后在单击“确定”后重定向,如下所示:

 $().ready(function() { $("#posManagerLoginForm").submit(function( event ) { event.preventDefault(); alert("Press 'OK' to go to Reporting Manager home"); window.location = "home.htm"; }); }); 

虽然不确定这会是什么用途。 如果你想按下一个不同的按钮(例如“取消”),你想留在表格上,那么你宁愿使用这样的’确认’:

 $().ready(function() { $("#posManagerLoginForm").submit(function( event ) { event.preventDefault(); if confirm(("Press 'OK' to go to Reporting Manager home")) window.location = "home.htm"; }); }); 

您也可以替换alert或使用自定义对话框进行confirm ,具体取决于您使用的库。 只需确保将window.location = "home.htm"放在对话框的函数中,否则它将立即执行。

举个例子,您可以在这里查看jQuery UI的对话框: https : //jqueryui.com/dialog/