javascript - onclose - ¿Cómo puedo obtener la URL de destino para el evento onbeforeunload?
onunload no funciona (3)
La respuesta de Kaze es un enfoque interesante, pero mirar el foco del elemento cuando se navega la página no es realmente confiable. En parte porque hay un retraso entre el clic del enlace y la navegación fuera de la página (tiempo durante el cual el usuario puede mover el foco a algún otro elemento, pero también porque un enlace puede estar enfocado (por ejemplo, mediante control del teclado o mousedown-sin -click) sin utilizarlo para navegar fuera de la página. Entonces si enfocas un enlace y luego cierras la ventana, pensaría que estás siguiendo el enlace.
Atrapar onclick
para cada enlace en la página (más onsubmit
en cada formulario) es un poco más confiable, pero aún puede ser engañado debido a la demora. Por ejemplo, usted hace clic en un enlace, pero luego, antes de que la nueva página comience a cargar, presione el botón Atrás (o presione Escape). Nuevamente, si cierra la ventana, cree que está siguiendo el enlace.
Quiero capturar la dirección, lo que el usuario escribe en la url box del navegador.
No hay forma de que eso suceda. Es una privacidad obvia no-no.
He buscado durante horas, pero no he podido encontrar una solución para esto.
window.onbeforeunload = warn;
Esto no funciona:
function warn (e)
{
var destination = e.href;
alert(destination );
}
De acuerdo, entonces para aclarar las cosas. Si el usuario hace clic en un enlace en la página, es fácil, porque puede agregar un manejador de eventos a todos los enlaces en evento de clic, pero. Quiero capturar la dirección, lo que el usuario escribe en la url box del navegador.
Porque no se puede hacer. La nueva ubicación es información privada / confidencial. Nadie quiere que sepa qué sitios visitan cuando abandonan su sitio.
Si solo quiere ver el destino del enlace, puede usar:
document.activeElement.href
Pero no es posible obtener el destino de la línea de dirección.
He oído hablar de soluciones donde desencadenan un evento si el mouse se mueve hacia arriba a la línea de dirección (para advertir al usuario que hay procesos inacabados que no se han tratado), pero este tipo de hackeo nunca lo haría.