In alcune interfacce web moderne, il tag dialog viene utilizzato per creare finestre modali native, senza necessità di librerie esterne. Una funzionalità spesso richiesta è quella di chiudere automaticamente il dialog quando l’utente fa clic al di fuori della finestra modale.

Il seguente frammento JavaScript mostra come implementare questo comportamento in modo semplice e diretto:


dialog.addEventListener("click", e => {
  const dialogDimensions = dialog.getBoundingClientRect()
  if (
    e.clientX < dialogDimensions.left ||
    e.clientX > dialogDimensions.right ||
    e.clientY < dialogDimensions.top ||
    e.clientY > dialogDimensions.bottom
  ) {
    dialog.close()
  }
})

Il codice aggiunge un gestore di eventi click all’elemento dialog. Quando l’evento si verifica, il listener ottiene le dimensioni e la posizione del dialog nella pagina tramite getBoundingClientRect().

Viene quindi verificato se le coordinate del clic (clientX e clientY) si trovano al di fuori dei limiti del dialogo. Se l’utente ha cliccato fuori dalla finestra modale, il metodo dialog.close() viene chiamato per chiudere il dialog.

Questa tecnica è utile quando si desidera mantenere un comportamento coerente con quello delle modali tradizionali: chiudersi al clic esterno, migliorando l'usabilità e l’esperienza utente.