2010-12-13 26 views
10

javascript veya PHP kullanarak tarayıcı penceresini kapatmadan önce onaylama iletişim kutusunu görüntülemem gerekiyor. tarayıcının kapat düğmesine tıkladığımda onay kutusu gelmelidir. diğer bilge görüntüleme iletişim kutusu yok. Lütfen bana yardım edin. Sen onbeforeunload olay işlemesi gerektiğiniTarayıcıyı kapattığımda iletişim kutusunu onaylayın.

cevap

22

...

function closeEditorWarning(){ 
    return 'Are you sure?' 
} 
window.onbeforeunload = closeEditorWarning; 

Or (

+3

Ve sen, mesela onay iletişim kutusunu bastırmak istesin, geri arama gelen 'undefined' dönebilirsiniz kullanıcının bir şey yazmaya veya düzenlemeye başlamadığını doğruladıktan sonra. Ancak, 'null' veya 'false 'döndürürseniz, IE, * null * veya * false *, garip bir şekilde istiyorsanız, kabaca size soran bir ileti gösterir. – KajMagnus

+1

sayfadaki kalış butonuna tıklayarak herhangi bir kodu çalıştırabilir miyim? –

-3
function doUnload() 
{ 
    // use confirm dialog box here 
    confirm("Window is closing..."); 

} 

<body onunload="doUnload()"> 
+1

onBeforeOnload, kullanılacak olay işleyicisidir. – mplungjan

1

onunload çok kullanışlı değildir güzel yapmak jquery, window.attachEvent/window.addEventListener kullanmak benim Görüş) ile 10 isteğinizi istediğiniz gibi (window.open ile yeni bir pencere açmayı deneyebilirsiniz), onbeforeunload daha yararlıdır bu durum için.

Daha iyi bir oyun, onbeforeunload numaralı telefondan harikadır, ancak Opera'da çalışmaz (bu genellikle bir anlaşma değil).

sarmaşık şöyle bir şey olmazdı, der ki:

<script> 

    var userIsEditingSomething; // set this if something crazy happens 
     oldOnBeforeUnload = window.onbeforeunload; 

    window.onbeforeunload = function() { 
     // attempt to handle a previous onbeforeunload 
     if ('function' === typeof oldOnBeforeUnload) { 
      var message = oldOnBeforeUnload(); 
      if ('undefined' !== typeof message) { 
       if (confirm('string' === typeof message ? message : 'Are you sure you want to leave this page?')) { 
        return; // allow user to exit without further annoying pop-ups 
       } 
      } 
     } 
     // handle our own 
     if (userIsEditingSomething) { 
      return 'Are you sure you want to exit?'; 
     } 
    }; 

</script> 
+0

VEYA kullanıcı ne zaman olursa olsun sayfadan çıktığında tetiklenir. Sadece tarayıcıyı kapatırken değil – mplungjan

+0

Haklısınız. Muhtemelen bu sorun için güzel temsiller olsa da (jquery vb), yıllar önce pencereyi kapama düğmesine basan biri arasında ayrım yapmak için "(event.clientX <0 || event.clientY <0)" koşulunu test ediyordum (durum doğrudur) ve normal gezinme eylemleri (bir bağlantıyı izleyin, bir form gönderin, geri, ileriye doğru). Bu, başarısızlığa neden olmayan bir çözüm değildir (örneğin, ALT-F4 yakalanmadı), bu yüzden birileri size daha iyi bir çözüm sunabilir. – ivy

İlgili konular