2010-05-27 28 views
6

J'ai besoin d'un script de message qui n'apparaîtra que lorsque les utilisateurs quitteront la page Web actuelle et non le site Web actuel. Quand les gens quittent complètement le site, le message apparaîtra et ils devront appuyer sur le bouton OK pour rester sur la page actuelle (et annuler pour quitter le site).Message OnUnload nécessaire pour les liens externes

Le script peut ne pas s'exécuter lorsque les utilisateurs restent sur le site Web ou lorsqu'ils cliquent sur des liens ou des pages internes.

Est-ce que cela peut être fait?

+0

ps mon webiste http://www.consolepro.net qui profides nintendo wii mod softmod doux a un scénario qui génère le lien possible double – tumtummetjes

+0

automatiquement de [Afficher un avertissement en quittant le site, pas seulement la page] (http://stackoverflow.com/questions/2365994/display-a-warning-when-leaving-the-site-not-just-the-page) – KyleMit

Répondre

5

Découvrez this very basic example solution. Il définit le gestionnaire onbeforeunload mais le supprime si l'utilisateur clique sur un lien interne. Voici une version générique du code de l'exemple de solution.

HTML:

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

JS (utilise jQuery):

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

alors quel sera le code total iclude la chaîne de requête etc? et je ne comprends pas la partie de lien interne? comme je ne peux pas changer nos liens internes qui sont générés automatiquement par notre panier – tumtummetjes

+0

et offcourse la partie du corps de balises html etc – tumtummetjes

+0

La ligne 'internal link' est simplement un exemple d'un lien qui aura le même nom de domaine que 'location.host' . Tout lien qui est "interne" à votre site Web (ce qui signifie qu'il ne lie pas à un domaine différent) doit provoquer l'instruction 'if'' this.href.match (location.host) 'pour retourner' true', provoquant le '' Le gestionnaire onbeforeunload' doit être retiré, empêchant ainsi d'empêcher le message «Êtes-vous sûr de vouloir quitter notre site web? [... commentaire continué plus bas ...] – Adam

1

j'ai eu un problème similaire. Cependant, dans mon cas, ce message devait être traduit en fonction de la langue de l'utilisateur, si quelqu'un appuie sur F5 ou ferme la fenêtre.

Suivez mon petit exemple.

<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

Dans la plupart des cas, vous n'avez pas besoin d'une fenêtre contextuelle pour tous les événements sauf celui: l'utilisateur ferme la fenêtre.

Voici ma solution pour cela:

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

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