2015-07-03 12 views
5

Złamałem mój problem w dół do następnego prostego kodu:Dlaczego IE11 wyświetla błąd podczas korzystania z 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> 

To działa zgodnie z oczekiwaniami w chromie bez ostrzeżenia lub błędu, ale w IE11 zgłasza następujący błąd podczas wyboru „Pozostań na tej stronie” :

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

Każdy pomysł, dlaczego?

+0

działa dobrze dla mnie w IE 11.0.9600.17842 –

+0

Używam 11.0.9600.17843. To naprawdę nie wyrzuca okna dialogowego błędu, ale widzę ten komunikat w konsoli JavaScript. Czy zdarzyło ci się tam patrzeć? – socketwiz

Odpowiedz

6

Właściwie błąd pochodzi z:

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

A to tylko spekulacje, ale wierzę, że twórcy IE chciał być w stanie złapać, gdy użytkownik zdecyduje się nie skorzystać z linku. W ten sposób można faktycznie spróbować złapać ten blok, a dowiesz się, kiedy użytkownik nie został przekierowany (w wyniku przedobrzania).

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

Jeśli console.log(error) zobaczysz, że nie ma żadnego komunikatu o błędzie, a numer błędu -2147467259.

+0

Wydaje się być rozsądnym dla mnie, dzięki! – socketwiz

Powiązane problemy