Un popup con exit intent, cookie di sessione ed esempio pratico da copiare e incollare. Ho intenzione di condividere con voi uno dei componenti comunemente utilizzati, soprattutto in contesti Ads.
L’obiettivo è mostrare un contenuto all’interno di un popup nel momento in cui, durante la navigazione, il cursore del mouse esce dalla finestra. E una volta chiuso evitare di mostrarlo nuovamente per il resto della sessione di navigazione.
Cos’è l’exit intent?
L’exit intent (intenzione d’uscita, tradotto dall’inglese) non è altro che la volontà dell’utente di spostare il focus dal contenuto della pagina web ad un altro elemento del browser o al di fuori di esso.
Come viene intercettato? Generalmente si utilizza l’evento mouseleave
associato alla finestra di navigazione. Il perché della scelta di questo evento è che l’utente, spostando il mouse al di fuori della finestra, esegue in seguito una di queste interazioni:
- vuole chiudere la finestra o il browser,
- vuole cambiare la tab di navigazione,
- vuole cambiare indirizzo nella barra dell’URL.
Perché è importante?
Tutte le interazioni appena definite portano l’utente lontano dai contenuti di una pagina web, magari dimenticandola senza più tornarci. Ecco quindi che l’intenzione di uscita dalla pagina viene rilevata e il pop-up diventa l’ultima risorsa per cercare di attirare l’attenzione dell’utente e non perdere il suo valore potenziale.
Deve però evitare di diventare un elemento fastidioso, sconfortando ulteriormente la navigazione. Ecco perché è necessario controllare se il popup è già stato chiuso, magari dopo aver cliccato un pulsante call-to-action o semplicemente con il bottone apposito, generalmente la ‘X’.
Visto l’aspetto teorico necessario a comprendere lo scopo del popup con exit intent, passiamo all’aspetto pratico. Su CodePen puoi trovare il mio pin con l’esempio pratico completo, ecco il link: https://codepen.io/GRiefolo/pen/wvpbOyJ.
HTML
La struttura del markup è molto semplice. Un pop-up per l’exit intent ha bisogno di un paio di cose:
- Il contenitore del popup, con un’ombra che prenda l’intera pagina;
- Uno pulsante di chiusura.
<div id="popup"> <div id="popup__close-btn">×</div> <h1>Lorem ipsum dolor sit amet</h1> </div>
Javascript
Lo script è suddiviso in tre parti:
- Definizione delle variabili;
- Definizione dell’evento che esegue la funzione per l’apertura del popup;
- Definizione della funzione di apertura del popup.
Come prima cosa prendiamo gli elementi fondamentali: il popup e il bottone di chiusura.
// define popup element... var popupModal = document.getElementById("popup"); // ... and popup close button inside popupModal var popupModalCloseBtn = popupModal.querySelector("#popup__close-btn");
In seguito usiamo l’evento mouseleave, assieme ad un controllo sulla posizione del cursose, per eseguire la funzione openModal()
che apre la modale.
// executing openModal() function when DOM is loaded document.addEventListener("mouseleave", (event) => { if ( event.clientY <= 0 || event.clientX <= 0 || event.clientX >= window.innerWidth || event.clientY >= window.innerHeight ) { openModal(); } });
Alla fine definiamo la funzione openModal(). Il meccanismo è semplice:
- Verifichiamo con
if(popupModal)
che il popup esista nel markup; - Se l’esito è positivo, definiamo una variabile che recuperi il cookie di sessione
sessionModalCookie
; - In base alla presenza o meno del cookie definiamo la visibilità del popup;
- Se viene eseguito un click sul bottone di chiusura si rimuove il popup e si imposta per la prima volta il cookie di sessione.
// Define openModal function function openModal() { // if popupModal exists ... if (popupModal) { // ... get a session storage cookie and define visibility ... let sessionModalCookie = sessionStorage.getItem("modal_closed"); if (sessionModalCookie) { popupModal.classList.remove("show"); popupModal.remove(); } else { popupModal.classList.add("show"); } if (popupModal) { // ... and add a click event listener for close it document.addEventListener("click", function (e) { if (e.target == popupModalCloseBtn) { popupModal.classList.remove("show"); popupModal.remove(); sessionStorage.setItem("modal_closed", "true"); } }); } } }
Il fatto che abbia usato un event listener globale verificando il target del clic potrebbe risultarti strano, ma torna utile se vuoi – ad esempio – impostare la chiusura della modale cliccando su altri elementi.
Conclusione
Questo componente è uno dei più usati in ambito marketing, ma questo codice può tornare utile in molti altri casi. Ad esempio potrebbe tornare utile modificare l’evento che apre il popup – magari all’apertura della pagina web – o riutilizzarlo per mostrare avvisi specifici.
Sentitevi liberi di scrivere un commento se volete integrare questo codice o suggerire una modifica!
Lascia un commento