Bu diyalogların bazılarının söylediğine rağmen, kötü niyetli bir şey yapamazlar . Sorunlu sayfayı herhangi bir sonuç vermeden kapatmak için her zaman Tamam'ı veya Sayfayı Bırak'ı tıklayabilirsiniz .
İletişim kutusu çok uzunsa ve düğmeler ekran kapalıysa , sayfayı kapatmayı onaylamak için basabilirsinizEnter .
Klavyeniz yoksa (dokunmatik ekranlı cihazlar), aşağıdaki yer imini kullanın veya SimpleSimon'un cevabını görün (yalnızca Chrome).
Şimdi, bazı detaylar.
Bir sayfa kapanırken bazı eylemleri gerçekleştirmenin tek bir yolu var: onbeforeunloadetkinlik boyunca . Elbette bu, kullanıcıya karşı kolayca kullanılabilir (örneğin, bir sayfayı kapatmaya çalıştığında, kopyasını yeni bir pencerede açar), bu yüzden çok sınırlıdır.
Aslında yapabileceğiniz en makul şey, özel sayfa ve iki düğmeden oluşan bir iletişim kutusu açmak, biri sayfadan diğeri kalıyor. Bir sayfanın bu iletişim kutusuyla yapabileceği tek şey, metnini tanımlamaktır. Düğmeler ve başlık çubuğu değişmez. İşte Firefox 3.6'dan bir ekran görüntüsü: (Firefox’un çok eski bir sürümü)

Tabii ki, herhangi bir metinle ve sadece Tamam / İptal düğmeleri ile pop-up'ları göstermenize izin verdiğinizde, er ya da geç bazı erkeklerin size karşı kullanacağından emin olabilirsiniz.

Yukarıdaki ekran görüntüsünde Tamam , sadece "Bu sayfayı bırak" anlamına gelir, ancak özel açıklama daha fazlasını önerir. Böylece tarayıcılar diyalogları değiştirdi, bu yüzden yanıltıcı olmalarını zorlaştırıyor. Örneğin, Firefox’un son sürümleri özel metni görmezden geliyor gibi görünüyor:

Chrome, özel metni gösterir, ancak kullanıcıya ne yapmak istediğini soran bir soru ekler ve düğmeler açıkça eylemlerini belirtir: (ancak "kedi videoları" iletilerine hala eğilimlidir!)

İşte Internet Explorer 10, aynı zamanda "kedi eğilimli":

Opera 12 onbeforeunloadolayı yok sayar ve böyle bir sekmeyi kapatmaya çalışırsanız, diğerleri gibi kapanır. Yine de en son Opera’yı test etmedim.
Yani, en önemli şeyleri özetlemek için:
- Sayfalar hiçbir metin içeren iletişim kutularını gösteremez. Web sitesi, tarayıcıdan özel bir metin içeren bir iletişim kutusu göstermesini isteyebilir, ancak tarayıcı tamamen görmezden gelebilir (Opera), genel metin kullan (Firefox) veya açıkça ne olacağını söyleyebilir (Chrome, IE).
- İletişim kutusunun ayrıntıları kullandığınız tarayıcıya bağlıdır, ancak düğmeler her zaman değiştirilemez. Açıkça hangisinin ne yaptığını söylemezlerse, OK , "bu sayfayı bırak * ve İptal " burada kal " anlamına gelir .
- Ayrılmaya karar verirseniz, web siteleri herhangi bir zararlı eylem gerçekleştiremez. Dosyalarınız kedi videoları ile değiştirilmeyecek, 135234 virüslere boğulmayacaksınız ve FBI bilgisayarınızda yasadışı bir yazılım olduğu konusunda bilgilendirilmeyecek.
onbeforeunloadSayfaları bırakmanızı veya kalmanızı istemenizi etkili bir şekilde engellemek istiyorsanız etkinliği devre dışı bırakabilirsiniz. İşte bir çapraz tarayıcı usercript . (bağlantı ölü ise aşağı kaydırın)
Eğer gösterileri kötü niyetli bir pop-up ve hala tıklayın korkuyorsun belirli bir web sitesindeki iseniz Ayrıl'a , bunu kaldırmak için bir yer işareti oluşturabilir. Yer imleri çubuğunuzu sağ tıklayın, Yeni yer imi (veya eşdeğeri) seçeneğini seçin ve bunu bir URL olarak yapıştırın: (yukarıdaki bağlantıdan sadece küçük kod)
javascript:var x=document.createElement('script');x.type='text/javascript';x.innerHTML='onbeforeunload=function(){};';document.body.appendChild(x);
Ardından, bu yer imini tıklamanız yeterlidir; açılır pencere aktif sayfadan geçici olarak kaldırılır.
Bu pop-up'ların tarayıcınızda nasıl göründüğünü test etmek veya yer imi / kullanıcı kitabını test etmek istiyorsanız, aşağıdaki kodla bir metin dosyası oluşturun ve bir .htmldosya olarak kaydedin :
<html><body onbeforeunload="return 'My custom text.'">_</body></html>
Kullanıcı bağlantısı şu anda ölü gibi görünüyor, bu yüzden işte archive.org önbelleğinden çıkartılmış bir kopya . Orijinal komut dosyası oluşturucu için tüm kredi.
// ==UserScript==
// @name Disable - remove onbeforeunload
// @namespace
// @description Disable - remove the annoying onbeforeunload event
// @include *
// @author netvisiteurs.com
// ==/UserScript==
var x = document.createElement('script');
x.type = 'text/javascript';
x.innerHTML = 'onbeforeunload = function() {};';
document.body.appendChild(x);