Nonostante ciò che dicono alcuni di questi dialoghi, non possono fare nulla di malevolo . Puoi sempre fare clic su OK o Lascia pagina per chiudere la pagina offensiva senza conseguenze.
Se la finestra di dialogo è troppo lunga e i pulsanti sono fuori dallo schermo , è possibile premereEnter per confermare la chiusura della pagina.
Se non si dispone di una tastiera (dispositivi touchscreen), utilizzare il bookmarklet in basso o vedere la risposta di SimpleSimon (solo Chrome).
Ora alcuni dettagli.
C'è solo un modo per eseguire alcune azioni alla chiusura di una pagina: attraverso l' onbeforeunload
evento. Naturalmente questo potrebbe essere facilmente utilizzato contro l'utente (ad esempio quando tenta di chiudere una pagina, ne apre la copia in una nuova finestra), quindi è molto limitato.
In realtà l'unica cosa ragionevole che puoi fare è aprire una finestra di dialogo con testo personalizzato e due pulsanti, uno per lasciare la pagina e uno per rimanere. L'unica cosa che una pagina può fare con quella finestra di dialogo è definire il suo testo. I pulsanti e la barra del titolo sono immutabili. Ecco uno screenshot di Firefox 3.6: ( versione molto vecchia di Firefox)
Naturalmente quando lasci che le persone mostrino i popup con qualsiasi testo e solo i pulsanti OK / Annulla , allora puoi essere sicuro che prima o poi alcuni ragazzi lo useranno contro di te.
Nella schermata sopra, OK significa semplicemente "Lascia questa pagina", ma la descrizione personalizzata suggerisce qualcosa in più. Quindi i browser hanno cambiato le finestre di dialogo, quindi è più difficile renderle fuorvianti. Ad esempio, le versioni recenti di Firefox sembrano ignorare il testo personalizzato:
Chrome mostra il testo personalizzato, ma aggiunge sempre una domanda che chiede all'utente cosa vuole fare e i pulsanti dichiarano esplicitamente le loro azioni: (ma è ancora soggetto ai messaggi "video di gatti"!)
Ecco Internet Explorer 10, anche "incline al gatto":
Opera 12 ignora semplicemente l' onbeforeunload
evento e se provi a chiudere una scheda del genere, si chiuderà come qualsiasi altro. Non ho testato l'ultima Opera, però.
Quindi, per riassumere le cose più importanti:
- Le pagine non possono mostrare dialoghi con nessun testo. Il sito Web può chiedere al browser di mostrare una finestra di dialogo con un testo personalizzato, ma il browser può ignorarlo del tutto (Opera), utilizzare un testo generico (Firefox) o dire esplicitamente cosa accadrà (Chrome, IE).
- I dettagli della finestra di dialogo dipendono dal browser in uso, ma i pulsanti sono sempre immutabili. Se non dicono esplicitamente quale fa cosa, allora OK significa "lascia questa pagina * e Annulla è" rimani qui ".
- I siti Web non possono eseguire azioni dannose se si decide di lasciarli. I tuoi file non verranno sostituiti con video di gatti, non sarai invaso da 135234 virus e l'FBI non verrà informato che hai un software illegale sul tuo computer.
onbeforeunload
Se lo desideri, puoi disabilitare l' evento, evitando efficacemente che le pagine ti chiedano di uscire o restare. Ecco uno script utente cross-browser . (scorrere verso il basso se il collegamento è morto)
Se ti trovi su un sito Web specifico che mostra un popup dannoso e hai ancora paura di fare clic su Lascia , puoi creare un bookmarklet per rimuoverlo. Fai clic con il pulsante destro del mouse sulla barra dei segnalibri, scegli Nuovo segnalibro (o equivalente) e incollalo come un URL: (è solo un codice miniato dal link sopra)
javascript:var x=document.createElement('script');x.type='text/javascript';x.innerHTML='onbeforeunload=function(){};';document.body.appendChild(x);
Quindi fai clic sul segnalibro e il popup verrà temporaneamente rimosso dalla pagina attiva.
Se vuoi testare come appaiono questi popup nel tuo browser o testare il bookmarklet / userscript, crea un file di testo con il seguente codice e salvalo come .html
file:
<html><body onbeforeunload="return 'My custom text.'">_</body></html>
Sembra che il link userscript sia morto in questo momento, quindi ecco una copia estratta dalla cache di archive.org . Tutto il merito per l'autore originale dello script.
// ==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);