J'ai un gestionnaire pour onbeforeunload mais je ne sais pas comment savoir si l'URL à laquelle ils ont cliqué sur la page se trouve sur le site. P> i Je veux juste qu'ils les alertent s'ils quitteront le site. P> p>
5 Réponses :
J'ai une idée, mais je ne sais pas si c'est du travail. Ma suggestion est, ajoutez chaque lien un événement OnClick avec un appel de la fonction. Cette fonction lit uniquement l'attribut HREF et stockez une variable avec la portée globale.
function getClickUrl()
{
if (clickedHrefAttrValue.indexOf("<your condition>" > -1)
{
//what ever you want do to
}
}
Il n'est pas possible de le faire 100% de manière fiable, mais si vous détectez lorsque l'utilisateur a cliqué sur un lien de votre page, vous pouvez l'utiliser comme un signal essentiel. Quelque chose comme ceci:
Très belle et une solution non agréve
Ce n'est pas très fiable. Buggy sur le navigateur natif MicroMax. Pourrait apporter de très mauvaises expériences à vos visiteurs.
Si vous avez des problèmes car votre site Web peut avoir des liens locaux absolus et relatifs, j'ai une autre solution (en utilisant jQuery):
démo p>
Il y a une bonne solution à ce que j'ai récemment mis en œuvre sur mon site Web. Imaginez-le, tout ce qui va être sur votre site Web qui navigue sur votre utilisateur sera un lien (étiquette d'ancrage), bouton, image cliquable ou quelque chose sur ces lignes. C'est certainement ne pas être l'élément corporel.
Que se passe-t-il lorsqu'un utilisateur quitte le site Web, il peut taper une URL et appuyer sur Entrée, cliquez sur un signet ou appuyez sur les boutons BACK / FORWER. P >
Lorsqu'un utilisateur le fait, faites ceci: p> Que se passe-t-il est que le corps devient l'élément actif de la cible dans ces cas (lorsque l'utilisateur quitte la Site Web) Et ce n'est pas le cas lorsque l'utilisateur clique sur sur le site interne des éléments navigables. P> Ceci est une solution propre et facile. Faites-moi savoir si vous faites face à des problèmes. p> p>
Donc, j'ai besoin de le faire afin que je puisse enregistrer un utilisateur si elles ont quitté le site de n'importe quelle page, mais pas si elles naviguent sur le site. Voici ma solution utilisant JS et PHP
sur chaque page où elles doivent rester connectées, définir une variable de session: p> crée maintenant deux scripts: P > Clear-in-session.php strong> p> logout.php strong> p> window.addEventListener('beforeunload', function(event) {
$.ajax({
type: 'POST',
async: false,
url: 'clear-in-session.php'
});
});
window.addEventListener('unload', function(event) {
$.ajax({
type: 'POST',
async: false,
url: 'logout.php'
});
});
S'il vous plaît, ne faites pas cela - ils savent qu'ils quittent le site - ils ont cliqué sur le lien. Ce genre de chose est ce qui donne à JavaScript un mauvais nom.
duplicailler possible de Comment puis-je obtenir l'URL de destination En JavaScript ONBEFOREUn Coeur?
MAUVAIS. Mauvais développeur. Ne me faites pas tailler sur le nez avec un journal.
Je suis en désaccord avec le vote de fermer; Il peut être possible sans lire la cible de l'événement, ce qui est l'autre question.
Cette chaîne de trucs me rend fou, je pars! Je ne veux pas rester. Ne fais pas cet homme
Seule la fois que cela est jamais acceptable, c'est lorsque l'utilisateur est entré au contenu qui serait autrement perdu lorsqu'ils se déroulent. par exemple. Gmail Composer la boîte de dialogue par e-mail. Une meilleure solution serait d'utiliser $ (fenêtre) .unload (..) et à tout sauver dans localStorage. Ou enregistrer dans localStorage toutes les n secondes, par exemple. comme gmail sauvegarde des brouillons.
Cela pourrait également être utilisé pour empêcher les attaques de phishing lorsque des personnes se lien vers un autre domaine de votre domaine et que vous souhaitez avertir l'utilisateur qu'ils vont dans un domaine différent. Je vois beaucoup de sites Web du forum le faire et je pense que c'est assez utile. Ils n'utilisent pas une fenêtre d'alerte ou de confirmation, ils vous envoient plutôt à une page d'interception.
Simplement à des fins analytiques est une utilisation juste, discrète.