hogehoge foobar Blog Style Beta

Web,Mac,Linux,JavaScript,Perl,PHP,RegExp,Git,Vim,Redmineなど技術的なことのメモや、ちょっと便利そうなものの紹介をしています。

GoogleAnalytics の _trackPageview での「pageTracker is not defined」の対処

Google Analytics で PDF や WMV 等の動画ファイルがファイルがどれくらい見られているかをトラッキングするのに使おうとしていた「_trackPageview」でJavaScriptエラーが発生する現象があったときの対処方法です。

pageTracker is not defined が発生する

最初に、以下のAnalytics ヘルプ のページを参考に、HTML の アンカータグに「_trackPageview」を設定しました。

サイトからのファイルのダウンロード (PDF、AVI、WMV など) をトラッキングするにはどうすればよいですか。 - Analytics ヘルプ

タグの onClick で「_trackPageview」を実行するように記述をします。
実際に設定したコードは以下のような形になります。

<a href="/files/hogehoge.pdf" onClick="javascript: pageTracker._trackPageview('/downloads/hogehoge'); ">

上のコードを設定したHTMLファイルをブラウザで開いて、リンクをクリックすると、「pageTracker is not defined」というエラーが発生しました。

Uncaught ReferenceError: pageTracker is not defined

エラーは Firefox の「Firebug」や Google Chromeの「デベロッパーツール(コンソール)」で見ることが出来ます。
Google Chrome で見ると以下のような形でエラーメッセージを確認できます。
f:id:mrgoofy33:20110227084823p:image

_gaq.push を使うように変更になっていた

いろいろ調べてみると、Google Analytics では「非同期トラッキング」が標準設定になっていたようで、「_trackPageview」についても「_gaq.push」を使っての記述が必要になったようです。以下のページがとても参考になりました。

Google Analytics非同期トラッキングが標準設定に 海外SEO情報ブログ

なので、これに従ってタグの onClick 部分を書き換えてみます。

<a href="/files/hogehoge.pdf" onclick="javascript:_gaq.push(['_trackPageview','/download/hogehoge']);">PDFを見る</a>

今度はJavaScriptエラーも発生しなくなり、トラッキングも出来ているようでした。

イベントトラッキング(_trackEvent)や、カスタム変数(_setCustomVar)を使っている場合も同じような変更が必要になるようです。

今回参考にしたページ

サイトからのファイルのダウンロード (PDF、AVI、WMV など) をトラッキングするにはどうすればよいですか。 - Analytics ヘルプ
http://www.google.com/support/googleanalytics/bin/answer.py?answer=55529

Google Analytics非同期トラッキングが標準設定に 海外SEO情報ブログ
http://www.suzukikenichi.com/blog/google-analytics-asynchronous-tracking-is-now-default/

非同期トラッキングコード移行マニュアル カグア!
http://www.kagua.biz/tracking/asynchronous-ikou.html