2009-08-17 21 views
52

Cuando intento cerrar la pestaña Google Docs con cambios no guardados, esto es lo que obtengo en mi navegador (FF 3.5).Alertas al navegar desde una página web

¿Estás seguro de que deseas navegar desde esta página?

Tiene cambios no guardados en este documento . Haga clic en Cancelar ahora, luego 'Guardar' para guardarlos. Haga clic en Aceptar ahora en descartarlos.

Presione OK para continuar, o Cancelar para Permanezca en la página actual.

Mi pregunta es si tales alertas son parte de la aplicación web (gdocs por ej.) O si son dadas por el navegador? Si es el último, ¿cómo se hace esto?

Respuesta

83

Por el navegador. Es el controlador de eventos beforeunload que devuelve el texto personalizado del cuadro de diálogo, que es solo el medio de los tres párrafos; los otros dos párrafos, así como el texto de los botones, no se pueden personalizar ni modificar.

window.onbeforeunload = function(){ return 'Testing...' } 

// OR 

var unloadListener = function(){ return 'Testing...' }; 
window.addEventListener('beforeunload', unloadListener); 

rendirá un cuadro de diálogo que dice

Are you sure you want to navigate away from this page? 

Testing... 

Press OK to continue, or Cancel to stay on the current page. 

Usted puede anular esto configurando el controlador para anular

window.onbeforeunload = null; 

// OR 

window.removeEventListener('beforeunload', unloadListener); 
+0

Gracias Peter. He investigado cómo se comportan los navegadores modernos antes del evento onbeforeunload y publiqué mis hallazgos. Por favor agregue cualquier otro detalle intrincado que sepa. –

+0

Hola Peter, ¿no hay forma de que podamos aprovechar el evento para producir una alerta personalizada que proporcione la misma funcionalidad que la alerta de ventana nativa? – SexyBeast

+0

No es que yo sepa, no. –

-11

Las alertas son parte de la aplicación web. Vea el código fuente y mire el javascript.

+1

buscar "onBeforeUnload". –

+0

No puedo verlo en el origen de Google Docs, al menos. –

+0

Es probable que esté enterrado en algún oscuro archivo de JavaScript. Google usa scripts que hacen que sus archivos JavaScript sean esencialmente ilegibles para un ser humano. – ceejayoz

Cuestiones relacionadas