Googleアナリティクスでは、外部へのリンクのクリック数やPDF、zip等のアクセス数を計測するために_trackPageviewという機能が用意されていますが、残念ながら正確に計測できないケースが存在するようです。どのようなケースで計測ができないのか、様々な環境でテストしてみましたので、結果をレポートしたいと思います。
まずは、正確に計測できないコードから見てみます。下記は、<a>タグのhref属性にzipファイルのURLを指定し、onclick属性で_trackPageviewを呼ぶようにしています。しかし、このコードではWindows、Mac共にSafariとGoogle Chromeで計測することができませんでした。
HTML & JavaScript
<a href="hoge.zip" onclick="_gaq.push(['_trackPageview', '/hoge.zip']);">zipダウンロード</a>
SafariやGoogle Chromeで計測できない理由としては、どうやらブラウザ側で_trackPageviewのリクエストをキャンセルしているようです。下図は、MacのSafariの構成ファイル一覧ウィンドウのキャプチャです。onclickの_trackPageviewのリクエストを中止しているのが確認できます。

SafariとGoogle Chromeを合わせると結構なシェアになるので、これでは正確なアクセス数を計測することができません。そこで、この問題を回避するため別ウィンドウで開くように変更してみます。まずは、<a>タグのtarget属性で_blankを指定してみます。
HTML & JavaScript
<a href="hoge.zip" target="_blank" onclick="_gaq.push(['_trackPageview', '/hoge.zip']);">zipダウンロード</a>
上記のコードでテストしたところ、SafariやGoogle Chromeでも計測することができました。しかし、HTMLのDTDがXHTML1.1の場合は<a>タグにtarget属性を指定することができません。そこで、JavaScriptのwindow.open()で別ウィンドウを開く方法も試してみました。
HTML & JavaScript
<a href="hoge.zip" onclick="_gaq.push(['_trackPageview', '/hoge.zip']); window.open('hoge.zip'); return false;">zipダウンロード</a>
window.open()を使用した場合でも、テストした全てのブラウザで計測することができました。つまり、別ウィンドウで開くことにより、_trackPageviewで正確なアクセス数を計測できるようになるようです。
今回、テストした環境とその結果を表にまとめてみました。MacはMac OS X 10.6、WindowsはMacのVMware Fusion上にインストールしたWindows7を使用しました。また、IE6とIE7はIETesterを使用しています。
環境 | _self | _blank | window.open() |
---|---|---|---|
Win IE8 | ○ | ○ | ○ |
Win IE7(IETester) | ○ | ○ | ○ |
Win IE6(IETester) | ○ | ○ | ○ |
Win Firefox3.6 | ○ | ○ | ○ |
Win Chrome11 | × | ○ | ○ |
Win Safari5 | × | ○ | ○ |
Win Opera11 | ○ | ○ | ○ |
Mac Safari5 | × | ○ | ○ |
Mac Firefox3.6 | ○ | ○ | ○ |
Mac Chrome11 | × | ○ | ○ |
Mac Opera11 | ○ | ○ | ○ |
多くのサイトでは、別サイトへのリンクやPDFは、別ウィンドウで開くことが多いので問題ありませんが、zipファイルへのリンクに関しては、同一ウィンドウを指定するケースも多いので、正確なダウンロード数を計測したい場合には、別ウィンドウを指定した方が良さそうです。