2010-12-08 3 views
9

Diese Frage bezieht sich auf Affiliate-Marketing, aber es ist wirklich eine generische Frage zum Abfangen von Hyperlinks, bevor sie auf eine andere Website gehen, wo Sie Besucheraktivität in eine Datenbank protokollieren können.Mit jQuery, wie interferiere ich Hyperlink Click Events temporär?

Mein Affiliate-Marketing-Client hatte eine wirklich gute Frage. Stellen Sie sich ein Szenario vor, in dem Sie Produkte, die über ein API-Schlüsselwort verfügen, von Amazon zurückziehen. Stellen Sie sich nun vor, ein Besucher klickt auf eines dieser Produkte, um es auf Amazon anzuzeigen. Die URL für dieses Produkt könnte wie folgt aussehen (und das ist nur eine Demo):

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

Aber wissen Sie was ist daran falsch? Es gibt das Start-Keyword nicht weiter. Wir haben also keine Ahnung, welche Stichwörter am effektivsten waren. Stattdessen wurde sie wollen wir die folgenden und dann verfolgen, dass irgendwie passieren könnte:

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

ich irgendwelche Dokumente nicht auf Amazon sehen, wo wir zusätzliche params passieren könnte und sie dann durch einen Filter in den Berichten verfolgen .

Also, das einzige, was mir einfällt, ist, dass wir den Klick erfassen müssen, bevor es zu Amazon geht. Mit anderen Worten, bevor dieses Ereignis aufbläht und ausgeführt wird, kann ich es irgendwie in jQuery abfangen, die href-URL für diesen Hyperlink analysieren, diese zusätzlichen Seed-Schlüsselwort-Informationen anheften, sie über AJAX zurück an eine PHP-Seite und eine Datenbank senden Tabelle, und geben Sie dann das Klickereignis frei, damit es ausgeführt wird und der Browser zu Amazon weitergeleitet wird.

Kann jemand wissen, wie das in jQuery getan wird? Ich kenne den AJAX-Teil - nur nicht den Klick-Abschnitt, der den Klick erfasst und dann freigibt.

Antwort

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

Sie können ein Click-Ereignis für alle Anker-Tags binden, wie

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

Wenn Sie die Standard-Aktion dann ein return true; setzte am Ende dieser Funktion tun wollen.

+0

Bingo! Genau das habe ich gebraucht. Ich hatte keine Ahnung, dass das möglich war - vielen Dank! :) Ich habe mit IE7 +, Opera (neueste), Chrome (neueste), FF (neueste) und Safari/Windows (neueste) getestet und es funktioniert. Das einzige, was ich hinzugefügt habe, war ein "var u = $ (this) .attr ('href');" damit ich weiß, auf welche URL geklickt wurde. – Volomike

+3

Ausgezeichnete und präzise Antwort. Als Update wäre in späteren Versionen von jQuery ein geeigneterer Weg, '$ (" a ") aufzurufen. On ('click', function() {...' – Trevor