2010-02-10 3 views
1

Voici mon problème. Je travaille dans un CMS et les utilisateurs sont capables de créer des hyperliens (internes et externes) Je me demande s'il y a un bon moyen de vérifier quand un utilisateur clique sur un lien s'il navigue vers un site externe. Je ne veux rien faire s'ils utilisent les boutons Précédent/Suivant, tapez quelque chose dans la barre d'adresse, etc. Je veux juste les rediriger vers une page de notre site qui prend l'adresse à laquelle ils VOULENT vraiment aller. requête chaîne et afficher un message de 5 secondes (ou plus) leur disant qu'ils quittent notre site et nous ne sommes pas responsables de ce qui est là, etc. Comme les utilisateurs finaux seront responsables de générer la plupart des liens, en leur apprenant à pointer Les liens sur la page intermédiaire sont loin d'être idéaux, alors je me demandais s'il y avait une solution facile en utilisant javascript.Rediriger vers une page intermédiaire avant de passer au site externe

Répondre

1

Vous pouvez utiliser jQuery pour fixer un événement de clic pour tous les liens sur votre site qui sont externes (commencer par http, moins certains cas particuliers), ce qui pourrait alors soit montrer une boîte de dialogue modale, ou un ensemble window.location à votre page intermédiaire (vous pouvez virer sur une chaîne de requête var pour l'URL externe). Vous pouvez faire un sélecteur sur mesure pour obtenir des liens externes, puis associez le comportement:

$.expr[':'].external = function(obj){ 
    return !obj.href.match(/^mailto\:/) 
      && (obj.hostname != location.hostname); 
}; 

$('a:external').click(function() { 
    //show your dialog box or set window.location 
    //link in question will be $(this).attr('href') 
}); 
0

Vous devez remplacer les liens des utilisateurs par vos propres liens spéciaux (par exemple http://yoursite.com/redirect.ashx?http://external.com) lorsqu'ils enregistrent leurs données ou, mieux, lorsque vous diffusez des contenus générés par les utilisateurs à d'autres utilisateurs.

+0

Obtenir le code où ils génèrent ces liens n'est pas une option. Nous utilisons un outil tiers et ne pouvons pas le modifier. Ce que je cherche vraiment est un moyen d'attraper quand un hyperlien externe est cliqué et le manipule là. – Ben

1

Je pense que je vais quelque chose de similaire à la réponse de wsanville. Excepté ce que je vais ajouter un événement click à toutes les balises d'ancrage et ensuite vérifier si leur valeur href est dans notre domaine.

donc quelque chose comme:

$('a').click(function() { 
    if this.href.indexOf('mydomain.com'!=-1) 
     return true; 
    else{ 
     window.location = "intermediate.html?href=" + this.href; 
    } 
}); 

Quelqu'un sait quel genre de performance due à la fixation d'un événement chaque balise d'ancrage sur une page pourrait avoir?

Questions connexes