2010-03-23 19 views
8

Kullanıcıya bir sayfaya gitmek için window.location.href sayfasını kullanıyoruz. Ayrıca, kaydedilmemiş değişikliklerin olması durumunda kullanıcıları uyarmak için window.onbeforeunload olayını da yapılandırdık. Orada kaydedilmemiş değişiklikler, ve ben kullanıcıyı gezinmek için window.location.href kullanmayı deneyin yerlerdewindow.onbefore ve 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"; 
} 

, ben uyarı mesajı alır.

Açılır pencerede Tamam'ı tıklarsam iyi çalışır. Ancak, İPTAL'ı tıklatırsam, JS window.location.href dosyasında belirtilmemiş bir hata atar.

Herhangi bir yardım için teşekkür ederiz.

+0

Eğer 'location.href' yapıyoruz kodu gösterin. –

+0

Sadece bunu IE7'de yeniden yapıyorum. FF 3.6, Chrome 4 ve IE8'in bir hata atmadığını doğruladım (IE6'yı test etmedim). Lütfen soru veya başlığın bir parçası olarak IE7'yi ekleyin. – Nick

cevap

11

Ayrıca bu sorunu da yaşadım (IE7 ve üstü, IE6'da değil).

Tek bulabildiğim çözüm, window.location.href çağrısını try/catch bloğuna sarmaktı.

Aşağıdaki, sorunu yeniden üreten tam bir örnektir. Eğer deneyin/yakalamayı uncomment Eğer tüm tarayıcılarda istenildiği gibi çalışır.

JavaScript (HTML başlığı):

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

Gelecek ziyaretçiler için: Bu sadece IE9'da benim için de düzeltildi, bu yüzden açıkça sadece IE7 değil. –

+1

... ve IE11 için de! – nitram

+0

.......... Ve Edge –