我有以下的onunload功能,我从其他地方偷走了......
$().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"或者"留在页面"选项?
或许其他人可以提出热门建议以便更好地处理?
感谢
答案 0 :(得分:2)
您无法覆盖onbeforeunload
对话框的样式。相信我,我之前在以前的项目中试过这个。
参考:http://msdn.microsoft.com/en-us/library/ms536907%28VS.85%29.aspx
它内置于浏览器对象中,您无法控制它。
但是,您可以将自己的对话框设置为在onbeforeunload
事件触发时显示,但不会禁用常规事件将显示的事件。非常讨厌,是的。
答案 1 :(得分:1)
你仍然被重定向的原因是因为你实际上没有做任何事情来阻止它。
如果要在提交表单之前打开警告框,请确保阻止默认行为(即提交表单),然后在单击“确定”后重定向:
$().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/