ugrás a tartalomhoz

Link aktiválás elkapása Javascripttel

janoszen · 2010. Már. 1. (H), 20.37
Sziasztok,

ismét egy frontend problémába ütköztem. Szeretnék outbound link trackinget csinálni Google Analytics-szel, viszont tennék bele egy csavart. Mindezt diszkrét JS-sel szeretném megcsinálni.

Az a gondom, hogy mindenhol csak az onclick eventet írják le, az egyéb aktivációs metódusokat (billentyűzet, stb) nem. Van erre valami globális megoldás, vagy meg kell néznem, melyik billentyűt ütötték le? (Ez utóbbi nem tetszene, mert teszem azt valaki beállíthatná magának, hogy ne az enter legyen a link aktiváló billentyű.)

Köszönöm
 
1

redirekt-szerű?

zzrek · 2010. Már. 1. (H), 21.29
Esetleg ha egy köztes linket használnál, ami gyűjtené az infókat?
2

Nem jó

janoszen · 2010. Már. 2. (K), 10.21
Ha nem akarok fizikailag megjelenő HTML oldalt, akkor ez a megoldás nem játszik. Egyelőre úgy oldottam meg, hogy a nem klikkelős emberek a statisztikai hibahatárba tartoznak.

A tracking kód most így néz ki:
<script type="text/javascript">
//<![CDATA[
 var _gaq = _gaq || [];
 _gaq.push(['_setAccount', 'UA-xxxxxxxx-x']);
 _gaq.push(['_trackPageview']);
 var topdomain = window.location.href.replace("http://","").replace(/^.*@/, "").replace(/\/.*$/, "");
 var openExternalClick = function(e) 
 {
  if (e.target && e.target.href)
  {
   e.target.href=e.target.href.replace("http://","redirect/");
   pageTracker._trackPageview(e.target.href);
  }
  return true;
 };
                        
 (function() {
  var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
  (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ga);

  if (document.getElementsByTagName)
  {
   var anchors = document.getElementsByTagName("a");
   for (var i=anchors.length-1; i>=0; i--)
   {
    var anchor = anchors[i];
    if (anchor.href && anchor.href.substr(0,7) == "http://" && anchor.href.replace("http://", "").replace(/^.*@/, "").replace(/\/.*$/, "") != topdomain)
    {
     if (anchor.addEventListener)
     {
      anchor.addEventListener("click", openExternalClick, false);
     } else if (anchor.attachEvent) {
      anchor.attachEvent("onclick", openExternalClick);
     }
    }
   }
  }
 })();
//]]>
</script>
Elég masszívan botcsinálta JavaScript kóder vagyok, szóval kommentek jöhetnek.
3

Fizikailag nem?

zzrek · 2010. Már. 2. (K), 10.29
Nem tudom mit értesz "fizikailag nem megjelenő" alatt, én épp csak arra gondoltam hogy ha már úgyis végigmész a linkeken javascripttel, akkor már azt is csinálhatod, hogy kicseréled őket valami olyanra, hogy (javascript:)valami(szám), az eredeti linket bepakolod egy tömbbe ("szám" indexbe), a "valami" feldolgozóban pedig trackeled megnyitás előtt (így el kell kapnia a billentyűre vagy bármi másra aktiválódó linkeket is).
Az mindenesetre szerintem is áll, hogy nagyon kevesen nem klikkelnek, kevesebben, mint amennyinek ki van kapcsolva a JS, úgyhogy szerintem se sokat veszítesz azzal, ha nem foglalkozol vele.