如何防止在jQueryUI对话框接受答案之前离开页面
我有以下代码:如何防止在jQueryUI对话框接受答案之前离开页面,jquery,jquery-ui,Jquery,Jquery Ui,我有以下代码: $(window).bind('beforeunload', function () { $("#dialogsendnotifications").dialog('open'); }); $("#dialogsendnotifications").dialog({ autoOpen: false, closeOnEscape: false, buttons: { "Ye
$(window).bind('beforeunload', function () {
$("#dialogsendnotifications").dialog('open');
});
$("#dialogsendnotifications").dialog({
autoOpen: false,
closeOnEscape: false,
buttons: {
"Yes": function () {
$(this).dialog('close');
},
"No": function () {
$(this).dialog('close');
}
}
});
因此,基本上,当用户试图离开时,它会弹出“是非”对话框。麻烦的是,对话框出现了,但它在用户选择按钮之前就离开了页面
有人能告诉我如何让它等待用户选择答案吗?返回false以阻止这样的操作:
$(window).bind('beforeunload', function () {
$("#dialogsendnotifications").dialog('open');
return false;
});
你不能。
onbeforeuload
事件的限制非常非常严格。您所能做的就是返回一个字符串,然后浏览器将在其自己的对话框中使用该字符串。你不能做任何花哨的事
这里有一个例子:|
谢谢你们。对我来说,这有助于:
$(window).on('beforeunload', function(){
return '';
})
但在我的示例中,在“beforeunload”函数中有一个循环(
.each()
)。然后不要忘记在返回值之前退出循环;) onbeforeunload
与其他事件不同return false
对onbeforeunload没有任何影响,只是让浏览器显示“真的离开此页面?”对话框,其中有“false”一词。这很有趣。你能说event.preventDefault()来停止它吗?@robrich:同样,onbeforeunload
是特殊的。如果您查看jQuery文档,您将看到returnfalse
仅表示event.preventDefault()代码>与事件.stopPropagation()组合代码>。所以不,event.preventDefault()代码>没有帮助。我强烈建议不要这样做。这是一种非常糟糕的用户体验,几乎任何合法的业务需求都可以用不同的方式更好地实现。例如,通过某种临时保存(可能是自动保存草稿)功能,可以更好地避免导航时意外丢失数据。如果他们失去联系怎么办?
$(window).on('beforeunload', function(){
return '';
})