2016-04-17 4 views
0

Ich habe eine Seite erstellt und ich habe JavaScript und PHP verwendet. Jetzt funktioniert diese Seite in allen Desktop-Browsern mit Ausnahme von Internet Explorer. Das Problem ist, dass, wenn ich diese Seite im IE öffne und wenn ich diese Seite neu lade, bekomme ich diese Nachricht:Warum bekomme ich beim Laden dieser Seite im IE "Diese Seite verlassen"?

Diese Seite verlassen?

null

[Leave] [Abbrechen]

Ich denke, das Skript, die dieses Problem verursacht dies:

window.onbeforeunload= function(){ 
    $(document).ready(function(){ 
     $.post("seendefault.php"); 
     }); 
    return null; 
} 

ich dies geschrieben habe, weil ich habe Führen Sie eine PHP-Datei beim Schließen des Browsers aus, wenn meine Seite darin geöffnet ist. Gibt es eine Ersetzung des oben genannten Skripts oder kann ich es verbessern und meine PHP-Datei wird ohne Probleme erfolgreich ausgeführt?

+0

Warum brauchen Sie das 'return null;'? Würde es immer noch funktionieren, wenn Sie es entfernen würden? Denn wenn es in Firefox usw. funktioniert, sollte es ohne das 'return null;' funktionieren. Ansonsten können Sie dies wahrscheinlich mit der [Beacon API] (https://developer.mozilla.org/en-US/docs/Web/API/Beacon_API) tun. – Xufox

+0

Wenn Sie dies in 'onbeforeunload' versuchen müssen, ist es zu spät, Daten zu senden, es sei denn, Sie geben tatsächlich eine Zeichenfolge zurück und lassen den Dialog – charlietfl

+0

@charlietfl anzeigen: es sei denn, Sie sind einer der 5 übrig gebliebenen Personen, die das glauben blockieren/synchrone AJAX-Anfragen sind unterbewertet und eine großartige Idee :) –

Antwort

2

Sie fügen nur einen Ereignishandler hinzu, wenn der Browser beendet wird. So können Sie es auf diese Weise tun sollten:

window.onbeforeunload = function() { 
    $.post("seendefault.php"); 
    return false; 
} 

Sie können einen Event-Handler innerhalb eines Event-Handler haben. Und es sollte return false und nicht return null sein.

+1

Möglicherweise möchten Sie die Rückgabe false entfernen. Warum hast du es? – evolutionxbox

+1

Technisch gesehen möchte OP wahrscheinlich 'e.preventDefault(); e.stopPropagation(); 'das ist nicht ganz dasselbe wie' return false' in vanillaJS, pedantischer Kommentar, ich weiß ... –

+0

@evolutionxbox Ich wollte etwas wie was [Elias] (http: // stackoverflow .com/users/1230836/elias-van-ootegem) gerade gesagt. Das ist der Grund. –

Verwandte Themen