2015-07-03 20 views
5

Ich habe mein Problem aufgeschlüsselt auf den folgenden einfachen Code:Warum gibt IE11 einen Fehler bei der Verwendung von window.onbeforeunload?

<!DOCTYPE html> 
<html> 
    <head> 
    <meta charset="utf-8"> 
    <title>IE test</title> 
    <script src="https://code.jquery.com/jquery-1.11.3.js"></script> 
    <script type="text/javascript" charset="utf-8"> 
     $(document).ready(function() { 
     $('.js-click').click(function(e){ 
      window.location.href = 'http://www.google.com/'; 
     }); 
     window.onbeforeunload = function(e){ 
      return 'moving on'; 
     }; 
     }); 
    </script> 
    </head> 
<body> 
    <a href="#" class="js-click">Google</a> 
</body> 
</html> 

Dies als in Chrom ohne Warnung oder einen Fehler erwartet funktioniert, aber in IE11 wirft es die folgende Fehlermeldung, wenn Sie „auf dieser Seite bleiben“ wählen :

File: 10.0.1.126:8080, Line: 10, Column: 11 

Irgendeine Idee warum?

+0

funktioniert gut für mich in IE 11.0.9600.17842 –

+0

Ich bin 11.0.9600.17843 ausgeführt. Es führt nicht wirklich zu einem Fehlerdialog, aber ich sehe diese Nachricht in der JavaScript-Konsole. Hast du zufällig dort nachgesehen? – socketwiz

Antwort

6

Eigentlich kommt der Fehler aus:

window.location.href = 'http://www.google.com/'; 

Und das ist nur Spekulation, aber ich glaube, dass die Entwickler von IE in der Lage sein wollte, zu fangen, wenn der Benutzer auf den Link nicht folgen entscheidet. Somit können Sie diesen Block tatsächlich versuchen zu fangen und Sie werden wissen, wann der Benutzer nicht umgeleitet wurde (als Folge von onbeforeupload).

try { 
    window.location.href = 'http://www.google.com'; 
} catch (error) { 
    alert("Y U NO REDIRECT"); 
} 

Wenn Sie console.log(error) Sie werden sehen, dass es keine Fehlermeldung und die Fehlernummer -2147467259.

+0

Scheint mir vernünftig, danke! – socketwiz

Verwandte Themen