2015-07-03 3 views
5

Ho rotto il mio problema giù al seguente codice semplice:Perché IE11 genera un errore quando si utilizza 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> 

Questo funziona come previsto in Chrome senza avviso o errore, ma in IE11 getta il seguente errore quando si sceglie "Rimanere su questa pagina" :

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

Qualche idea, perché?

+0

funziona bene per me in IE 11.0.9600.17842 –

+0

Sto correndo 11.0.9600.17843. In realtà non genera una finestra di errore, ma vedo quel messaggio nella console JavaScript. Ti è capitato di guardare lì? – socketwiz

risposta

6

In realtà l'errore proviene da:

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

E questo è solo speculazione, ma credo che gli sviluppatori di IE volevano essere in grado di catturare quando l'utente decide di non seguire il link. Quindi, puoi effettivamente provare a catturare questo blocco e saprai quando l'utente non è stato reindirizzato (come risultato di un carico eccessivo).

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

Se console.log(error) vedrete che non c'è alcun messaggio di errore e il numero di errore è -2147467259.

+0

Mi sembra ragionevole, grazie! – socketwiz