1

次のリンクを使用して、Googleアナリティクスを通じてアウトバウンド リンクを記録しました。リンクを新しいウィンドウで開くことはできますか?

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

 <a href="http://www.example.com" onClick="recordOutboundLink(this, 'Outbound Links', 'example.com');return false;">
4

5 に答える 5

5

編集、target="_blank" を追加するのを忘れていました:

アウトバウンドリンクを追跡する方法は次のとおりです。

<a href="http://outgoinglink.com" target="_blank" onclick="_gaq.push(['_trackEvent','outgoing_links','outgoinglink.com'])">Link Text</a>
于 2012-04-22T22:09:22.263 に答える
1

ジェフの答えは、私にとってこの問題を解決することに非常に近かった. Google が推奨するコードは target = _blank を壊し、window.open 戦略はポップアップ ブロッカーによってキャッチされます。ターゲットのテストを次のように変更しました。

if (!link.target || link.target.match(/^_(self|parent|top)$/i)){
    return false;
    setTimeout(function() { document.location = link.href }, 100);
} else {
    return true;
}
于 2013-10-30T04:08:12.753 に答える
0

一般的な場合

target何でもあるというより一般的なケースでは、

  • <a>空の文字列 -要素のデフォルト。と同じ意味_self
  • _blank- URL が新しいウィンドウ/タブに読み込まれます
  • _self- URL は現在のページを置き換えます。
  • _parent- URL は親フレームに読み込まれます
  • _top- URL は、ロードされる可能性のあるフレームセットを置き換えます
  • name - ウィンドウの名前

行を変更できます

setTimeout('document.location = "' + link.href + '"', 100)

これに:

setTimeout('window.open("' + link.href + '", link.target == "" ? "_self" : link.target)', 100)

奇妙なことに、 to を提供することは を提供すること""window.open同じ_blankであるため、追加の?:演算子が必要です。

ところで: 提供されたコード (および公式の Google の例で提供されたコード) は、正しく動作するように少し変更する必要があります。アウトバウンドリンクを追跡するために Google アナリティクスを設定するにはどうすればよいですか? を参照してください。公式の例は機能しません

于 2012-11-12T07:52:00.360 に答える
0

これは、現在のウィンドウで開くリンクと、変更なしで新しいウィンドウで開くリンクの両方で機能するはずの、提供したリンクからの変更されたスニペットです。

<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 の公式コード サンプル) にも当てはまります。ここでも、これらの特殊なケースを処理するコードを追加できます。
于 2012-09-07T12:20:28.367 に答える