--- title: beforeunload slug: Web/Events/beforeunload translation_of: Web/API/Window/beforeunload_event ---
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 | {{domxref("Event")}} |
Propriedade | Tipo | Descrição |
---|---|---|
target {{readOnlyInline}} |
{{domxref("EventTarget")}} | O evento alvo (the topmost target in the DOM tree). |
type {{readOnlyInline}} |
{{domxref("DOMString")}} | O tipo de evento. |
bubbles {{readOnlyInline}} |
{{jsxref("Boolean")}} | O evento é normalmente bubble? |
cancelable {{readOnlyInline}} |
{{jsxref("Boolean")}} | É possível cancelar o evento? |
returnValue |
{{domxref("DOMString")}} | O valor de retorno do evento (a mensagem que será exibida ao usuário). |
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 });
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 {{bug("588292")}}.
Desde 25 de maio de 2011 a especificação HTML5 define que chamadas aos métodos {{domxref("window.alert()")}}, {{domxref("window.confirm()")}} e {{domxref("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.