2010-03-23 13 views
8

Stiamo usando window.location.href per navigare l'utente in una pagina. Inoltre, abbiamo configurato l'evento window.onbeforeunload per avvisare gli utenti nel caso ci siano delle modifiche non salvate.window.onbeforeunload e window.location.href in IE

window.onbeforeunload = confirmBeforeClose; 

function confirmBeforeClose() { 
    if (jwd.global.inEditMode) 
     return "Your changes will not be saved :) and you will be punished to death"; 
} 

In luoghi dove ci sono modifiche non salvate, e cerco di usare window.location.href per navigare l'utente, ottengo il messaggio di avviso.

Funziona correttamente se si fa clic su OK nel popup. Tuttavia, se faccio clic su ANNULLA, il JS genera un errore non specificato su window.location.href.

Qualsiasi aiuto è apprezzato.

+0

Si prega di mostrare il codice in cui si sta facendo la 'location.href'. –

+0

Posso solo riprodurlo in IE7. Ho confermato che FF 3.6, Chrome 4 e IE8 non generano un errore (non ho testato IE6). Aggiungi IE7 come parte della domanda o del titolo. – Nick

risposta

11

Anche questo problema si verificava (in IE7 e versioni successive, non in IE6).

L'unica soluzione che ho trovato era il wrapping della chiamata window.location.href in un blocco try/catch.

Il seguente è un esempio completo che riproduce il problema. Se disattivi il try/catch allora funziona come desiderato in tutti i browser.

JavaScript (in HTML testa):

window.onbeforeunload = confirmBeforeClose; 

    function confirmBeforeClose() 
    { 
    return 'You have made changes on this page that will be lost if you navigate away without saving.'; 
    } 

    function leavePage() 
    { 
    // try { 
      window.location.href = "http://www.example.com"; 
    // } catch(e) { } 
    } 

HTML:

 
<body> 
<a href="#" onclick="leavePage(); return false;">Leave this page</a> 
</body> 
+2

Per i futuri visitatori: questo è stato appena risolto anche per me su IE9 ora, quindi è chiaramente non solo IE7. –

+1

... e anche per IE11! – nitram

+0

.......... E Edge –

Problemi correlati