2010-05-27 16 views
6

Necesito un script de mensajes que solo aparecerá cuando las personas abandonen la página web actual y no el sitio web actual.Mensaje OnUnload necesario para enlaces externos

Cuando las personas abandonen el sitio web por completo, aparecerá el mensaje y deberán presionar el botón OK para permanecer en la página actual (y cancelar para salir del sitio web).

Es posible que la secuencia de comandos no se ejecute cuando las personas realmente permanecen en el sitio web o cuando hacen clic en enlaces internos o páginas.

¿Se puede hacer esto?

+0

ps mi webiste http://www.consolepro.net cuales profides Nintendo mod suave softmod wii tiene un script que genera el enlace automaticamente – tumtummetjes

+0

duplicado posible de [Mostrar una advertencia al salir del sitio, no solo la página] (http://stackoverflow.com/questions/2365994/display-awarning-when-leaving-the-site-not-just-the-page) – KyleMit

Respuesta

5

Consulte this very basic example solution. Establece el controlador onbeforeunload pero luego lo elimina si el usuario hace clic en un enlace interno. A continuación se muestra una versión genérica del código de la solución de ejemplo.

HTML:

<a href="internal_link.html">internal link</a> 
<a href="http://www.example.com">external link</a> 

JS (utiliza jQuery):

window.onbeforeunload = function(){ 
    return "Are you sure you want to leave our website?"; 
} 
$(function(){ 
    $('a, input, button').click(function(){ 
      window.onbeforeunload = null; 
    }); 
}); 
+0

Entonces, ¿cuál será el código total de la cadena de consulta, etc.? y no entiendo la parte del enlace interno? como no puedo cambiar nuestros enlaces internos generados automáticamente por nuestro carrito de compras – tumtummetjes

+0

y por supuesto la parte del cuerpo de las etiquetas html, etc. – tumtummetjes

+0

La línea 'internal link' es simplemente un ejemplo de un enlace que tendrá el mismo nombre de dominio que 'location.host' . Cualquier enlace que sea "interno" a su sitio web (lo que significa que no se vincula a un dominio diferente) debería causar que la instrucción 'if'' this.href.match (location.host) 'devuelva' true', causando ' antes de descargar el controlador 'se debe eliminar, evitando así que aparezca el mensaje' '¿Estás seguro de que quieres abandonar nuestro sitio web?' '. [... comentario continua a continuación ...] – Adam

1

tengo un problema similar. Sin embargo, en mi caso, se suponía que este mensaje se traduciría de acuerdo con el idioma del usuario, si alguien presiona F5 o cierra la ventana.

Sigue mi pequeño ejemplo.

<html> 
<head> 
<script type="text/javascript"> 
function closeThis() 
{ 
    if (window.confirm("Minha mensagem!")){ 
     window.close(); 
    } 
} 

function test() 
{ 
    // Add a warning in case anyone tries to navigate away or refresh the page 
    return confirm("Minha mensagem"); 
} 


</script> 
</head> 
<body onbeforeunload=test();> 
<p>Hello World! Press F5 or Close this Window</p> 
</body> 
</html> 
1

En la mayoría de los casos usted no necesita una ventana emergente para todos los eventos excepto la que: el usuario cierra la ventana.

Aquí está mi solución para esto:

$(window).on('beforeunload', function() { 
    /* whatever you want here */ 
} 

$(document).on('click keydown', function(){ 
    $(window).off('beforeunload'); 
}); 
Cuestiones relacionadas