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/