beforeunload
        
        
          Limited availability
        
        
        
          
                
              
                
              
                
              
        
        
      
      This feature is not Baseline because it does not work in some of the most widely-used browsers.
O evento beforeunload é disparado quando o window, o document e seus recursos estão prestes a ser descarregados.
Quando uma string é atribuída na propriedade returnValue do Event, uma caixa de díalogo aparecerá solicitando ao usuário uma confirmação para sair da página (veja exemplo abaixo). Quando nenhum valor é fornecido, o evento é processado silenciosamente.
| Bubbles | Não | 
| Cancelable | Sim | 
| Target objects | defaultView | 
| Interface | Event | 
Propriedades
| Propriedade | Tipo | Descrição | 
|---|---|---|
| targetSomente leitura | EventTarget | O evento alvo (the topmost target in the DOM tree). | 
| typeSomente leitura | DOMString | O tipo de evento. | 
| bubblesSomente leitura | Boolean | O evento é normalmente bubble? | 
| cancelableSomente leitura | Boolean | É possível cancelar o evento? | 
| returnValue | DOMString | O valor de retorno do evento (a mensagem que será exibida ao usuário). | 
Exemplos
window.addEventListener("beforeunload", function (event) {
  event.returnValue = "\\o/";
});
// equivalente a
window.addEventListener("beforeunload", function (event) {
  event.preventDefault();
});
Navegadores baseados no WebKit não seguem a especificação para caixas de diálogo. Um exemplo que funcionaria na maioria dos navegadores seria aproximadamente o seguinte:
window.addEventListener("beforeunload", function (e) {
  var confirmationMessage = "\\o/";
  e.returnValue = confirmationMessage; // Gecko, Trident, Chrome 34+
  return confirmationMessage; // Gecko, WebKit, Chrome <34
});
Notas
Quando este evento retorna um valor não vazio (non-void), é solicitada ao usuário uma confirmação para descarregar a página. Na maioria dos navegadores o valor retornado no evento é exibido como mensagem nessa confirmação. No Firefox 4 e versões anteriores a string retornada não é exibida para o usuário. Ao invés disso, o Firefox exibe a mensagem "Esta página está perguntanto se você deseja sair - é possível que as alterações feitas não sejam salvas." Veja Erro do Firefox 588292.
Desde 25 de maio de 2011 a especificação HTML5 define que chamadas aos métodos window.alert(), window.confirm() e window.prompt() serão ignoradas durante este evento. Para mais detalhes veja a especificação HTML5 (em inglês).
Note também que vários navegadores para celular ignoram o resultado deste evento (isso que dizer que eles não solicitam a confirmação do usuário). O Firefox possui uma configuração escondida em about:config que faz o mesmo. Em essência, isto significa que o usuário estará sempre confirmando que o documento pode ser descarregado.