Algunos sitios, como StackExchange, muestran un mensaje emergente como "¿Está seguro de que desea abandonar esta página?" cuadro de diálogo cuando intenta salir bajo ciertas condiciones, como si tiene una publicación que no ha terminado de editar. ¡Esto es útil!
Desafortunadamente, a los sitios maliciosos o infectados les gusta usar la misma funcionalidad para decir: "¡Oye! ¡No has instalado nuestro antivirus de malware para abordar los 111 virus que definitivamente no estamos mintiendo sobre encontrar en tu computadora!", Y el "Deje esto Las opciones de página "y" Permanecer en esta página "se reemplazan por algo como" Esté seguro. Instale nuestro producto "y" Dispárese en el pie ". Esto no es útil!
Javascript puede hacer algunas cosas desagradables. Cuando recibo uno de esos diálogos tratando de evitar que salga de un sitio claramente malicioso, ¿cuál debería ser mi respuesta? ¿Es seguro hacer clic en "Abandonar esta página" o en lo que sea que reemplazaron el texto? ¿Podría un sitio cambiar el comportamiento del botón o interceptar mi intento de navegar y dibujar su propio diálogo falso que hace lo que un atacante quiere cuando hago clic en él?
Respuestas:
A pesar de lo que dicen algunos de estos diálogos, no pueden hacer nada malicioso . Siempre puede hacer clic en Aceptar o Salir de la página para cerrar la página ofensiva sin ninguna consecuencia.
Si el cuadro de diálogo es demasiado largo y los botones están fuera de la pantalla , puede presionarEnter para confirmar el cierre de la página.
Si no tiene un teclado (dispositivos de pantalla táctil), use el bookmarklet a continuación o vea la respuesta de SimpleSimon (solo Chrome).
Ahora, algunos detalles.
Solo hay una forma de realizar alguna acción cuando se cierra una página: a través del
onbeforeunload
evento. Por supuesto, esto podría usarse fácilmente contra el usuario (por ejemplo, cuando intenta cerrar una página, abre su copia en una nueva ventana), por lo que es muy limitada.En realidad, lo único razonable que puede hacer es abrir un cuadro de diálogo con texto personalizado y dos botones, uno para salir de la página y otro para quedarse. Lo único que puede hacer una página con ese diálogo es definir su texto. Los botones y la barra de título son inmutables. Aquí hay una captura de pantalla de Firefox 3.6: ( versión muy antigua de Firefox)
Por supuesto, cuando dejas que las personas muestren ventanas emergentes con cualquier texto y solo botones OK / Cancelar , puedes estar seguro de que tarde o temprano algunos chicos lo usarán en tu contra.
En la captura de pantalla anterior, OK significa simplemente "Abandonar esta página", pero la descripción personalizada sugiere algo más. Por lo tanto, los navegadores han cambiado los cuadros de diálogo, por lo que es más difícil hacerlos engañosos. Por ejemplo, las versiones recientes de Firefox parecen ignorar el texto personalizado:
Chrome muestra el texto personalizado, pero siempre agrega una pregunta preguntando al usuario qué quiere hacer y los botones indican explícitamente sus acciones: (¡pero sigue siendo propenso a los mensajes de "videos de gatos"!)
Aquí está Internet Explorer 10, también "propenso a los gatos":
Opera 12 simplemente ignora el
onbeforeunload
evento y si intentas cerrar una pestaña como esa, se cerrará como cualquier otra. Sin embargo, no he probado la última Opera.Entonces, para resumir las cosas más importantes:
Puede deshabilitar el
onbeforeunload
evento si lo desea, evitando efectivamente que las páginas le pidan que se vaya o se quede. Aquí hay un script de usuario cruzado . (desplácese hacia abajo si el enlace está muerto)Si está en un sitio web específico que muestra una ventana emergente maliciosa y todavía tiene miedo de hacer clic en Dejar , puede crear un marcador para eliminarlo. Haga clic con el botón derecho en la barra de marcadores, elija Nuevo marcador (o equivalente) y péguelo como URL: (es solo un código minifundido del enlace de arriba)
Luego, simplemente haga clic en ese marcador y la ventana emergente se eliminará temporalmente de la página activa.
Si desea probar cómo se ven esas ventanas emergentes en su navegador o probar el bookmarklet / userscript, cree un archivo de texto con el siguiente código y guárdelo como un
.html
archivo:Parece que el enlace del script de usuario está muerto en este momento, así que aquí hay una copia extraída de la caché archive.org . Todo el crédito para el creador del guión original.
fuente
En realidad, FireFox tiene una solución bastante ingeniosa (y fácil). Si escribes
en la barra de direcciones, luego desplácese hacia abajo para
y establezca su valor en Verdadero, ya no verá las ventanas emergentes Salir de la página. En Firefox. Lástima que no haya una solución similar en Chrome.
fuente
La solución más simple en Chrome es bloquear la pestaña.
Escribe chrome: // crash en la barra de direcciones y guárdalo como marcador .
La próxima vez que desee abandonar dicha página, simplemente haga clic en el marcador y eliminará esa pestaña al instante, sin afectar sus otras pestañas. No es necesario eliminar toda la sesión del navegador, como han sugerido otros.
Alternativamente, puede colgar la pestaña usando chrome: // colgar y luego simplemente cerrar la pestaña sin ejecutar JavaScript.
No estoy seguro si esto es posible en otros navegadores.
fuente
Este es el evento window.onbeforeunload y una característica del navegador web. Entonces, este debería ser un diálogo fijo del navegador web. Puede probar en diferentes navegadores y para que pueda ver, los cuadros de diálogo están en diferentes diseños.
Pero supongo que podría desarrollar una ventana emergente con javascript, que se parece mucho a la ventana emergente original del navegador. Y si es un buen desarrollador, también comprobaría el tipo de navegador antes de mostrar el diálogo. ;)
Entonces, para estar muy seguro acerca de un diálogo original, debe verificar en paralelo el diálogo correcto, es decir, aquí: http://samples.msdn.microsoft.com/workshop/samples/author/dhtml/refs/onbeforeunload.htm
Consulte aquí para obtener más información sobre el evento:
https://developer.mozilla.org/en-US/docs/Web/API/window.onbeforeunload
http://msdn.microsoft.com/en-us/library/ms536907% 28VS.85% 29.aspx
fuente
Solución rápida si no confía en la "ventana emergente" y sus intenciones / acciones:
Para Chrome:
Escapar para eliminar la ventana emergente
Haga clic derecho en la página
Seleccionar inspeccionar
Desplazarse hacia arriba
Haga clic derecho en la etiqueta
Eliminar nodo
Cerrar pestaña
Estoy seguro de que los otros navegadores tienen opciones similares.
fuente