2009-07-31 31 views
8

Googleアナリティクスから新しいリクエストが発生しないクリックをトラッキングしようとしています。具体的には、jQuery UI tabs widgetで作成されたタブをクリックします。 I限り、その唯一の大きな違い、別のインスタンスでは、Googleアナリティクスでアンカータグをトラッキングする方法

$('.ui-tabs-nav li a').click(function() { 
    val = "/tab/" + $(this).attr('href'); 

    // when uncommented, the following line reports, for example: 
    // /tab/#main 
    // as expected. 
    // console.log(val); 

    res = urchinTracker(val); 
}); 

同じ方法で動作します。私は、コード(「ウニトラッカー」)の古いバージョンを使用し、そのようなクリックをログに記録しようとしています文字列にハッシュ(#)記号がないことを伝えることができます。その文字は、urchinTracker()で追跡された文字列で許可されていないのですか、他の原因がある可能性があります(リンクをクリックした人はいません)。

答えて

8

デフォルトでは、Googleアナリティクスはtracking anchor tagsを無効にします。従来のトラッキングコードのためにそれを有効にするには、次の形式を使用:

_uanchor = 1; 
urchinTracker(val); 

変数_uanchorに値を設定すると、最新のGAのコードベースを使用する場合の方法_setAllowAnchorを呼び出すのと等価です。 (詳細はGoogle Analytics Tracking Code Migration Guide - にあります。このリンクは古くなっています)。

_setAllowAnchorの方法は、Google Reference Siteに記載されています。

+3

私が何かを紛失していない限り、これは完全に間違っています。この手法は、ページはめ込みリンクではなく、リンク先ページ(通常はキャンペーントラッキング)にのみ有効です。今日で – pdeschen

+1

(2013年5月)、これはおそらく、それを処理するための方法だろう:http://stackoverflow.com/a/6756202/565110 –

+1

この答えは、確かに、間違っている、そして未承認する必要があります。 '_setAllowAnchor'は、GAが'? '文字の代わりにキャンペーンのURLパラメータの区切り文字として'# 'シンボルを解釈するようにします。ドキュメントから: "このオプションをtrueに設定すると、キャンペーンのトラッキングURLに疑問符(?)の代わりにポンド記号(#)を使用してクエリ文字列の先頭を示すことができます。ここでも、これは 'src'がページ内アンカーを参照するリンクのクリックをトラッキングすることとは関係ありません。 – steveluscher

3

要するに、Googleアナリティクスでは、「#」文字を含むページ上のリンクはトラッキングできません。 index.html#fooのクリックは単にindex.htmlのクリックとして扱われ、 '#'の後のすべては無視されます。あなたは「#」文字のエスケープ検討することもでき

:あなたの例では

$('.ui-tabs-nav li a').click(function() { 
    val = new String("/tab/" + $(this).attr('href')).replace('#', '&'); 

    // when uncommented, the following line reports, for example: 
    // /tab/#main 
    // as expected. 
    // console.log(val); 

    res = urchinTracker(val); 
}); 

を、これはGoogleアナリティクスで正常に動作する必要がありますこれは、/tab/?mainのページビューを記録します。

+0

ありがとうございます。実際には、同様のアプローチを試しています。このアプローチでは、.substring(1)を呼び出して先頭の「#」を削除します。これが成功すれば(もちろん、これを確認するのに時間がかかります!)私はあなたの答えを受け入れます。 –

+0

うん、それは間違いなくそれであるようです。あなたの答えをアップアップしました。 –

+0

ところで、どうやってこれを知っていますか?どこのGoogleサイトにもその情報が見つかりませんでした。明らかに、この方法ではうまくいくはずですが、スクリプトでは、フラグメント識別子を含む暗黙的なトラッキングヒットと、トラッキング関数への明示的な呼び出しとを区別できると思っていました。 –

0

好きなように聞こえますGoogle Analytics Event Tracking例ではonclick = "" rubbishを使用していますが、これらをjQueryのクリックイベントにもバインドする可能性があります。

0
  1. 私は_uanchor = 1;メソッドを使用して試しました。そのではありません。それがうまくいかない理由は、Google Analyticsのパラメータをハッシュ値として送信するように設計されており、ハッシュ値を送信しないためです。 in Török Gábor's answer引用されたガイドから

    、1に_uanchorを設定すると次のような効果があります

    有効になって、クエリ文字列

    からのリクエストステムを分離するために、デフォルト?の代わりに#を使用する場合これは[キャンペーントラッキング]セクションにあります。

  2. Rob Knight's answerでも問題ありませんが、少し修正しました。擬似コードで:

    if (href contains ?) { 
    href = href.replace('#', '&'); 
    } else { 
    href = href.replace('#', '?'); 
    } 
    

本当にfoo.html&bar=bazのようなURLを持つようにGAに重要それはちょうど私にクリーナー見えたかどうかわかりません。

1

あなたは、ページ内のアンカーのクリックを追跡したい場合は、次のように世界的に動作します:

window.onhashchange = function() { 
    _gaq.push(['_trackPageview', location.pathname + location.search + location.hash]); 
} 

あなたは、このような

$('#someid a').click(function(event){ 
    event.preventDefault(); 
    var target = $(this).attr('href'); 
    // some more clever stuff 
}); 

としていくつかの特定のonclickのハンドラを持っている場合は、する必要があることに注意してください手動でトリガーするためにハッシュを先頭に追加するonhashchange

$('#someid a').click(function(event){ 
    event.preventDefault(); 
    var target = $(this).attr('href'); 
    // triggers onhashchange 
    location.hash = target; 
    // some more clever stuff 
}); 
関連する問題