2009-04-29 22 views
5

IE ve FF'de, bir olay işleyicisini onBeforeUnload'a ekleyebilir ve olayın bir özelliğine bir dize ileterek, kullanıcının "boşaltma" ile devam etmek isteyip istemediğini soran bir iletişim kutusu görür (ya da pencere veya uzağa gitme).Kullanıcı, pencereyi Safari/Chrome'da kapattığında bir onay iletişim kutusu açabilir miyim?

Safari ve Chrome, onBeforeUnload'u desteklemiyor ve onUnload çok geç görünüyor. Aynı işlevselliği Safari/Chrome'da çoğaltmanın bir yolu var mı? NOT: Kullanıcıyı rehin tutmaya çalışmıyorum. Bunun nagging ve un-cool olduğunu biliyorum. Aslında, sitem, kullanıcının özgürce gitmesine izin vermek için çok uzun bir süreye gidiyor ve geri döndüklerinde her şeyi yerinde tutuyor. Ancak, IFrames içindeki diğer sitelere ev sahipliği yapıyorum ve bazen bunlar benden kurtulmaya ve tarayıcıyı ele geçirmeye karar verdiğim şeydir.

Teşekkürler!

+0

Bu genellikle disp için kaba kabul edilir unutmayın Diğer insanların sitelerini kendi çerçevelerinize yatırın ve Digg'nin bunu sadece son zamanlarda yaptığı zaman çok büyük bir öfke vardı. –

+0

Biliyorum ve öneri için teşekkürler. Ancak, Digg'den çok farklı bir hedefimiz var ve (en azından inanıyorum) bunu yapmak için iyi bir nedenimiz var, bazı gerçek işlevsellik sağlıyor. –

cevap

7

Bu Chrome ve Safari hem de benim için mükemmel çalışıyor: Ben pencereyi kapatmak çalıştığınızda

<html><body><p>Test</p> 
<script>window.onbeforeunload = function() { return "Sure?"; }</script> 
</body></html> 

, ben istemini olsun.

+0

Hmmmmmmm. Bu garip ... Kodum Safari'de çalışmıyordu. Belki de işleyiciyi eklemek için Prototype's Event.observe() kullanıyordum ... Neyse, çok teşekkürler! Hayatımı çok daha kolay yaptın! –

+0

@RichieHindle Bu yöntemi kullanarak çocuğu kapatırken ana pencereyi yenileyebilir miyim? ya da bunu teyit yerine başka bir js işlevi çağırmasına izin verebilir miyim? – raym0nd

+0

@ raym0nd: 'Before beforeload' işleyicisi ne yapabileceğine dair bir dizi kısıtlamaya sahiptir. Tam olarak ne olduklarından emin değilim ve muhtemelen tarayıcılar arasında değişebilir. Bunu test etmelisin, ama şimdi ve gelecekte her yerde çalışacağından şüphe duyarım. – RichieHindle

2

StackOverflow kendisi onbeforeunload kullanır ve Safari'de benim için çalışıyor:

function setConfirmUnload(a){window.onbeforeunload=a?function(){return a}:null} 
2

ben krom bunu kontrol ve bu kullanarak iyi çalışıyor gibi görünüyor:

<body onunload="alert('x');" onbeforeunload="test1();"> 
+0

Asıl soru, "onUnload'un çok geç olduğu" gibi görünüyor. –

İlgili konular