2012-02-28 17 views
0

私は自分のサイト(PHPページ内)に追加したGoogleアナリティクスコードを持っており、アウトバウンドリンク/イベントを追跡するコードも追加しました。リンクを開く前に少し待つ必要はないので、コードは少し変更されました。なぜなら、リンクはすべて新しいウィンドウで開かれているからです。Google Analytics JavaScriptイベントトラッカーコードでイベントがトラッキングされない

発信リンクはすべて正しく機能しています。

何らかの理由で、イベントがまったくトラッキングされていません。ここで

は、Analyticsのコードをヘッダーにあります:

<script type="text/javascript"> 

    var _gaq = _gaq || []; 
    _gaq.push(['_setAccount', 'UA-XXXXXXX-X']); 
    _gaq.push(['_trackPageview']); 

    (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'; 
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); 
    })(); 

</script> 

<script type="text/javascript"> 
function recordOutboundLink(link, category, action) { 
    try { 
    var myTracker=_gat._getTrackerByName(); 
    _gaq.push(['myTracker._trackEvent', category, action]); 
    }catch(err){} 
} 
</script> 

そして、ここでは、私は、各リンクの上に持っているコードです:

<a href="http://sitelink.tld" target="_blank" onClick="recordOutboundLink(this, 'Outbound Links', 'http://sitelink.tld');"> 

誰かがイベントがないだろう、なぜ私が把握助けることができますAnalytics Eventsページに表示されますか?

+1

JavaScriptのデバッグ出力を確認できますか?役に立つ警告やエラーが含まれている可能性があります。 – CodesInChaos

+0

いいアイデアだと思っていませんでした。それをどうやって行うのかを考え出してすぐにチェックします... – IsaacL

+0

ちょっとして、新しいコードで正しく動作するように見えましたが、何も見えませんでした古いコードで... – IsaacL

答えて

1

古い同期構文と新しい非同期synteaxを混合しています。 あなたが関数は次のようになります:

function recordOutboundLink(link, category, action) { 
    _gaq.push(['_trackEvent', category, action]); 
} 
+0

catcherrコードが必要ですか?私はすぐにそれを試してみます - ありがとう! – IsaacL

+0

私はそれを使用しません。これらの場所でエラーが発生することはありません。しかし、必要ならば自由に追加してください。 – Eduardo

+0

働くようです - ありがとう! – IsaacL

1

コードの入力ミスですか? var myTracker=_gat._getTrackerByName();

_gat_gaq

+0

いいえ、私はそれが正しいと信じて、オンラインでクイック検索を確認しているようです...しかし、お試しいただきありがとうございます! – IsaacL

1

すべきではない私は、この1だけで設定された第1の2つのフィールドがありなどカテゴリアクション、私はイベントを取得するデフォルトのトラッキングコードとのリンクやフォーム要素にこのコードを使用しています。

onclick="_gaq.push(['_trackEvent', 'Site wide', 'Search Input']);"

1

が実行され、関数内でsetTimeoutを置くことによってGAにイベントを送信するためのjs時間を与えます。ページは_gaq.pushが実行する前にアウトバウンドリンクにリダイレクトされています。

function recordOutboundLink(link, category, action) { 
    _gaq.push(['_trackEvent', category, action]); 
    setTimeout('document.location = "' + link.href + '"', 100); 
} 

それとも、新しいウィンドウで開くには:

function recordOutboundLink(link, category, action) { 
    _gaq.push(['_trackEvent', category, action]); 
    setTimeout('window.open("' + link.href + '","newsite")', 100); 
} 

あなたはトラッカーが実行されていると、新しいウィンドウがロードされる前に実行する時間を持っていることを確認している場合は、あなたのオリジナルのソリューションが動作するはずです。

+0

上記のとおり、すべてのリンクが新しいタブ/ウィンドウで開かれているため、タイムアウトは不要です。新しいページが開いているときに元のページでトラッキングコードを実行するのに十分な時間があります。タイムアウトは "target"オプションに何の影響も与えません。 – IsaacL

+0

@IsaacL新しいウィンドウを開いた例を追加しました。しかし、トラッカーの実行時間がある場合は、[GA Debug with Chromeがインストールされています](https://chrome.google.com/webstore/detail/jnkmfdileelhofjcijamephohjechhna)のコンソールで、結果が表示されるか、少なくともイベントが記録されたトラッカーが表示されます。 )。 –

+0

上記のコード変更を使用して終了しましたが、これはタイムアウトを必要とせず、正常に動作しているようですが、助けてくれてありがとう! – IsaacL

関連する問題