2010-12-08 65 views
9

Cette question fait référence au marketing d'affiliation, mais c'est vraiment une question générique sur l'interception de liens hypertexte avant qu'ils ne partent vers un autre site, où vous pouvez enregistrer l'activité des visiteurs dans une base de données.Avec jQuery, comment puis-je intercepter un lien hypertexte Cliquez temporairement sur des événements?

Mon client marketing affilié a eu une très bonne question. Imaginez un scénario dans lequel vous avez retiré des produits d'Amazon via son API, en utilisant un mot-clé seed. Imaginez maintenant qu'un visiteur clique sur l'un de ces produits pour l'afficher sur Amazon. L'URL de ce produit peut ressembler à ceci (ce qui est juste une démo):

http://www.amazon.com/dp/B0042RU3Y0/?tag=xxxxxxxxxxxxxxxx-20

Mais devinez quel est le problème avec ça? Ce n'est pas passer ce mot-clé de graine. Nous n'avons donc aucune idée des mots-clés qui ont été les plus efficaces. Au lieu de cela, elle a pu passer nous souhaitant la suivante, puis suivre que d'une certaine manière:

http://www.amazon.com/dp/B0042RU3Y0/?tag=xxxxxxxxxxxxxxxx-20&seed=laptops

Je n'ai pas vu docs sur Amazon où nous pourrions passer params supplémentaires et de les suivre dans les rapports par un filtre . Donc, la seule chose à laquelle je peux penser est que nous devons capturer le clic avant qu'il ne disparaisse vers Amazon. En d'autres termes, avant que cet événement ne se mette à bouillir et soit exécuté, jQuery peut d'abord l'intercepter, analyser l'URL href de cet hyperlien, ajouter des informations sur ce mot clé, le renvoyer sur une page PHP et une base de données. table, puis relâchez cet événement click pour qu'il soit exécuté et que le navigateur se connecte à Amazon.

Est-ce que quelqu'un sait comment cela se fait dans jQuery? Je connais la partie AJAX - mais pas la partie d'interception du clic qui saisit le clic, puis le libère.

Répondre

3
var seed = "&seed=laptops"; 
$("a").live('click',function(){ 
    $(this).attr('href', $(this).attr('href')+seed); 
}); 
20

Vous pouvez lier un événement de clic à toutes les balises d'ancrage, comme

$("a").click(function(){ 
    // write your code 
}); 

Si vous voulez faire l'action par défaut, puis mettre un return true; à la fin de cette fonction.

+0

Bingo! C'est exactement ce dont j'avais besoin. Je n'avais aucune idée que c'était possible - merci beaucoup! :) J'ai testé avec IE7 +, Opera (dernière version), Chrome (dernière version), FF (dernière version) et Safari/Windows (version la plus récente) et cela fonctionne. La seule chose supplémentaire que j'ai ajouté était "var u = $ (this) .attr ('href');" pour que je sache quelle URL a été cliquée. – Volomike

+3

Réponse excellente et concise. En tant que mise à jour, dans les versions ultérieures de jQuery, un moyen plus approprié serait d'appeler '$ (" a "). On ('click', function() {...' – Trevor