2012-04-03 10 views
1

Ich habe ein Problem in IE9 mit onbeforeunload - wenn der Code unten ausgeführt wird, zeigt es wiederholt ein Dialogfeld fragt, ob Sie bleiben oder die Seite verlassen möchten.Verhindern onbeforeunload-Dialoge in IE9

Ich habe meinen Code geändert, um Standardfunktionen basierend auf this thread vergeblich zu verhindern.

Jede Hilfe zu diesem Thema wäre sehr willkommen.

Codebeispiel:

window.onbeforeunload = function(e) { 
    e.preventDefault(); 
    e.returnValue = false; 
    saveFormData(); 
    return null; 
} 

function saveFormData() { 
    $.post("<?php echo site_url('resume/cleanup'); ?>", { resume_id: "<?php echo $this->session->userdata('resume_id'); ?>" }); 
} 

Antwort

3

Sie können eine AJAX-Anforderung senden, während die Seite entladen, da die meisten Browser blockieren. Sie sollten den Benutzer bitten, auf der Seite zu bleiben, wenn schmutzige Daten vorliegen. erwartet tun sollte, das ist alles, was Sie Ihren Code aus Ihrem onbeforeunload Handler

Versuchen ohne .post $ aufrufen und es sollte als

verhalten
1

Das einzige, was Sie berechtigt sind, in einem onbeforeunload Handler zu tun, ist ein Dialog angezeigt werden soll. Sie speziell nicht bekommen zusätzliche Zeit, um Aufgaben, die Zeit dauern, um abzuschließen, wie feuern HTTP-Anfragen - der Benutzer hat gebeten, Ihre Website zu verlassen; Abgesehen davon, dass sie höflich gefragt werden, ob sie bleiben wollen, dürfen Sie sie nicht zum Bleiben bringen (selbst wenn Sie aufräumen).

https://developer.mozilla.org/en/DOM/window.onbeforeunload