2011-01-27 11 views
2

私は完全な実稼働環境でこれをテストしていませんが、jQueryのこの小さなスニペットは、カスタマイズ可能なクラス名のリンクを解析して同等のGoogle Analyticsイベント追跡コードにする良い方法を提供しているようです。Googleアナリティクスイベントトラッキング統合他の誰かがこれに対してより良い解決策を見つけるか?

これはうまく機能しますか?ここでもっとうまくいくものは何ですか?

jQuery(function(){ 
     $("a.track").each(function(){ 
    var obj = $(this); //provide scope 
      obj.data("href", obj.attr("href")); 
    obj.data("target", obj.attr("target")); 

    obj.attr({"target": ""}); 
      obj.attr({"href": "#" + obj.data("href") }); 

      obj.click(function(){ 
       var find = {c: "cat_", a:"action_", l:"label_", d:"data_"}; //define your class prefixes 
       var p = {}; 
       $.each(obj.attr('class').split(/\s+/), function(i,v){ 
        $.each(find, function(a, b){ 
         if(v.indexOf(b) == 0){ p[a] = v.replace(b, "").replace("__", " "); } //double underscore converted to space 
         }); 
        });     
       track(p); Log("tracking..."); 
       if(obj.data('target') == "_blank"){ 
     var newWindow = window.open(obj.data("href"), '_blank'); 
     newWindow.focus();   
     } 
     else{ window.location = obj.data("href"); 
     } 


     }); 

      }); 

     function track(i){ 
      if(i==undefined || !i["c"] || !i["a"]){Log("Both the 'category' and 'action' are required to track events!"); return;} 
      var d = {c: "Category", a:"Action", l:null, d:null}; //set default values 
      var p = $.extend(d, i); //merge function data with defaults     
      _gaq.push(['_trackEvent', p.c, p.a, p.l]); 
     } 

function Log(x){try{console.log(x);}catch(e){}} 
    }); 

答えて

1

これは妥当な方法です。それがあなたのために働くならば、一緒に行こう。

関連する問題