当用户离开页面时,我正在运行一个对话框。唯一的问题是它运行了1秒就消失了?我知道它与bind('beforeunload')有关,但是对话框很快就消失了,您无法读取它
我该如何阻止这种情况发生
$(文档).ready(函数(){
//将对话框弹出式调制解调器附加到页面正文
$('body')。追加(“<;div id='confirmDialog'title='Confirm'>;<;p>;<;ui-icon-ui-icon-icon-ui-icon-alert'style='float:left;margin:0 7px 20px 0;”>;<;/span>;您确定要离开“+brandName+”?<;br/>;您的订单将不会保存。<;/p>;<;/p>;<;/div>;”;
//“创建”对话框
$('confirmDialog')。对话框({
自动打开:错误,
莫代尔:是的,
覆盖:{
背景颜色:“#000”,
不透明度:0.5
},
按钮:{
“我确定”:函数(){
var href=$(this.dialog('option','href',this.href));
window.location.href=href;
},
“完成我的订单”:函数(){
$(this.dialog('close');
}
}
});
//在用户使用函数参数e离开页面之前将事件绑定到
$(窗口).bind('beforeunload',函数(e){
//Mozilla占据了主导地位
变量e=$('confirmDialog').dialog('open').dialog('option','href',this.href);
//适用于IE和Firefox版本4之前的版本
如果(e){
$('confirmDialog').dialog('open').dialog('option','href',this.href');
}
//狩猎旅行
e、 $('confirmDialog').dialog('open').dialog('option','href',this.href');
});
//如果用户单击链接,则取消绑定功能
$('a')。单击(函数(事件){
$(窗口).unbind();
//event.preventDefault();
//$('confirmDialog').dialog('option','href',this.href.).dialog('open');
});
//如果用户提交表单,则取消绑定函数
$('form')。提交(函数(){
$(窗口).unbind();
});
});
在卸载之前使用浏览器内置的方法,您需要向其中返回一个字符串,浏览器将显示该字符串并询问用户是否要离开页面
您不能使用自己的对话框(或jQueryUI模式对话框)在卸载之前覆盖
beforeunload无法将用户重定向到其他页面
$(窗口).on('beforeunload',function()){
return“您确定要离开吗?”;
});
这将弹出一个警告框,提示“您确定要离开吗?”,并询问用户是否要离开页面
(更新:Firefox不显示您的自定义消息,它只显示自己的消息。)
如果要在页面卸载时运行函数,可以使用$(window).unload(),只需注意它不能阻止页面卸载或重定向用户。(更新:Chrome和Firefox阻止卸载中的警报)
$(窗口)。卸载(函数(){
警惕(“再见”);
});
演示:http://jsfiddle.net/3kvAC/241/
更新:
$(…).unload(…)自jQuery v1.8以来已被弃用,请改用:
$(窗口).on('unload',function()){
});