Vediamo quindi come effettuare un classico messaggio alla chiusura di una pagina. Iniziamo parlando dell'evento incriminato: window.onbeforeunload. Questo evento, come si deduce dal nome, esegue una funzione data nel momento in cui si cerca di lasciare la pagina.
Codice:
1
window.onbeforeunload = function(){
2
return 'Arrivederci e buon viaggio! Torna a trovarci!';
3
}
se inseriamo nel nostro file javascript (oppure tra i tag <script> e </script> le righe qui sopra, all'uscita della pagina verremmo salutati con un bel Ciao! Bello no?
No! Non fatelo assolutamente così! Ve lo proibisco!
Perché? Perché questo ciao ci tormente ogni volta che cerchiamo di uscire dalla pagina! Diventerà un incubo per chiunque!
La cosa migliore da fare è proporlo agli utenti solamente una volta. Questo si può fare con i cookie.
Codice:
1
window.onbeforeunload = function(){
2
if ( (document.cookie.indexOf('messaggioFastidioso') == -1){
3
document.cookie = "messaggioFastidioso=1; expires=" + new Date(new Date().setTime(new Date().getTime() + 24 * 60 * 60 * 1000)).toGMTString();
4
return 'Arrivederci e buon viaggio! Torna a trovarci!';
5
}
In questo esempio se il cookie messaggioFastidioso non esiste lo creiamo e visualizziamo il messaggio, in caso contrario non facciamo nulla. In pratica il messaggio viene visualizzato solo ogni 24 ore.
Nulla di complicato, vero?
Possiamo combinare varie cose fino ad ottenere questa simpatica funzioncina di mia invenzione:
visualizza sorgentestampa?
Codice:
01
/**
02
*
03
* Mostra un messaggio all'uscita di una pagina
04
*
05
* @author Giulio "Chalda" Bettega
06
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
07
* @link http://blog.chalda.it/?p=145
08
* @version 1.0.20091217
09
*
10
*/
11
12
// Inizializzo il timer
13
var startTimer = new Date().valueOf();
14
15
// Aggiungo una funzione prima che la pagina venga chiusa
16
window.onbeforeunload = function() {
17
18
// Recupero il tempo trascorso
19
var timer = parseInt(new Date().valueOf() - startTimer)/1000;
20
21
// Controllo di non aver ancora mostrato il messaggio
22
if ( (document.cookie.indexOf('richiestaCommenti') == -1) && (timer > 60) ){
23
24
// Per le prossime 24 ore non mostro più il messaggio
25
document.cookie = "richiestaCommenti=1; expires=" + new Date(new Date().setTime(new Date().getTime() + 24 * 3600000)).toGMTString();
26
27
// Il messaggio da visualizzare
28
return 'Stai leggendo questa pagina da più di un minuto! ' + '\n'
29
+ 'Probabilmente l\'hai ritenuta interessante!' + '\n'
30
+ 'Che ne dici di farmelo sapere con un commento?';
31
}
32
}
Come si può capire leggendo i commenti questa funzione mostra il messaggio solamente ogni 24 ore e solamente a chi rimane sulla pagina per più di 60 secondi, in modo da non importunare coloro i quali giungono per sbaglio sul nostro sito (ricordo che il 90% non resta su di una pagina per più di 10 secondi, il restante 10% sono coloro che hanno trovato quello che cercavano )
Questa funzione è implementata in questo post, quindi, se siete arrivati a leggere fin qui, quando lascerete la pagina vi costringerò a lasciare un messaggio