Boîte de dialogue s'exécute pendant 1 sec et disparaît?

Je suis en cours d'exécution, une boîte de dialogue à l'utilisateur de quitter la page. La seule chose est qu'il tourne pendant 1 sec et disparaît? Je sais que cela a à voir avec bind('beforeunload'), mais le dialogue meurt plus tôt que vous pouvez lire.

Comment faire pour arrêter cela?

$(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();
});
});
  • vous avez besoin de retourner false sinon, l'événement continue à le unload et, par conséquent, va fermer la fenêtre...
  • avec le retour de faux, la plupart des navigateurs ouvrez une boîte de Dialogue par Défaut: "rester" ou "quitter"
  • de retour false de beforeunload va juste faire une boîte d'alerte avec les "fausses" sur elle.
  • Lors de la copie de un exemple, essayer de le comprendre avant de le modifier. e.$('#confirmDialog') n'a pas de sens.
InformationsquelleAutor user154107 | 2011-05-19