これは、現在のウィンドウで開くリンクと、変更なしで新しいウィンドウで開くリンクの両方で機能するはずの、提供したリンクからの変更されたスニペットです。
<script type="text/javascript">
// Records an event for an outbound link. Supports links even if they open in a
// different window (target="_blank").
// Don't forget to return the return value of this function from the onclick handler.
// link - A reference to the <a> anchor object to which this call is attached
// parameters - Parameters to pass to the event, in an array:
// category/action/label/value/noninteraction or some subset; see GA docs.
// Pass "undefined" (the value, not the string) for unspecified optional params if necessary.
// Exmaple:
// <a href="http://www.google.com"
// onclick="return recordOutboundLink(this, ['category', 'action', 'label', 6.6, false);">link</a>
function recordOutboundLink(link, parameters) {
try {
_gaq.push(['_trackEvent'].concat(parameters));
if (link.target == '_blank') {
return true;
} else {
setTimeout(function() { document.location = link.href }, 100);
return false;
}
} catch (err) {
return true;
}
}
</script>
ここでは、2 つのリンク タイプを示します。onclick ハンドラーは両方で同じであることに注意してください。
<a href="http://www.example.com"
onClick="return recordOutboundLink(this, ['Outbound Links', 'example.com']);">
<a href="http://www.example.com"
target="_blank"
onClick="return recordOutboundLink(this, ['Outbound Links', 'example.com']);">
制限事項:
- ブラウザが 'target="blank"' を無視し、代わりに同じウィンドウ (Facebook iOS アプリ内の UIWebView など) で URL を開くと、リンクが追跡されない場合があります。これは、ErikdR の受け入れられた回答にも当てはまります。このようなケースを検出するコードを追加できます (例: javascript を介して ipad/iphone webview を検出します)。
- ユーザーが「target="blank"」のないリンクを ctrl-/shift-/cmd-クリック (つまり、新しいタブまたはウィンドウで開く) しようとすると、URL は開かずに既存のウィンドウで開きます。新しいウィンドウで。同じことが Roslyn のコード スニペット (および Google の公式コード サンプル) にも当てはまります。ここでも、これらの特殊なケースを処理するコードを追加できます。