当用户离开页面时,我正在运行一个对话框。唯一一件事就是它运行1秒后就消失了?我知道这和bind('beforeunload')
有关,但是对话框死得比你读到它的时间还早。
我如何阻止这种情况的发生?
$(document).ready(function() {
// Append dialog pop-up modem to body of page
$('body').append("<div id='confirmDialog' title='Confirm'><p><span class='ui-icon ui-icon-alert' style='float:left; margin:0 7px 20px 0;'></span>Are you sure you want to leave " + brandName + "? <br /> Your order will not be saved.</p></div>");
// Create Dialog box
$('#confirmDialog').dialog({
autoOpen: false,
modal: true,
overlay: {
backgroundColor: '#000',
opacity: 0.5
},
buttons: {
'I am sure': function() {
var href = $(this).dialog('option', 'href', this.href);
window.location.href = href;
},
'Complete my order': function() {
$(this).dialog('close');
}
}
});
// Bind event to Before user leaves page with function parameter e
$(window).bind('beforeunload', function(e) {
// Mozilla takes the
var e = $('#confirmDialog').dialog('open').dialog('option', 'href', this.href);
// For IE and Firefox prior to version 4
if (e){
$('#confirmDialog').dialog('open').dialog('option', 'href', this.href);
}
// For Safari
e.$('#confirmDialog').dialog('open').dialog('option', 'href', this.href);
});
// unbind function if user clicks a link
$('a').click(function(event) {
$(window).unbind();
//event.preventDefault();
//$('#confirmDialog').dialog('option', 'href', this.href).dialog('open');
});
// unbind function if user submits a form
$('form').submit(function() {
$(window).unbind();
});
});
发布于 2013-07-24 02:15:38
发布于 2015-05-25 23:05:28
在我的例子中,我使用它在转到我的new应用的另一部分之前显示一个“预加载器”,所以这与打开的新页面中出现的“预加载器”相匹配,以实现页面之间的美学变化。
它对我起作用的(我试了所有的方法)是这样的:
function myLoader() {
// Show my Loader Script;
}
$( window ).on( 'beforeunload' , function() {
myLoader();
} );
https://stackoverflow.com/questions/6063522
复制相似问题