0

私はグーグルアナリティクスでアウトバウンドリンクを追跡するために以下のコードを使用しています(このサイトのどこかにあります)。2つの問題が発生しています。

  1. 時々、出力のe.currentTarget.host部分は、クリックがつながるドメインを表示する代わりに、自分のドメインを表示します。私のドメインが時々表示される理由はありますか?
  2. このコードを変更して、次のようにすることは可能ですか?(1)リンクを強制的に新しいウィンドウで開き、(2)図のようにアウトバウンドクリックイベントを追跡します。

    $(function() {
    $("a").on('click',function(e){
        var url = $(this).attr("href");
        if (e.currentTarget.host != window.location.host) {
            _gat._getTrackerByName()._trackEvent("Outbound Links", e.currentTarget.host, url, 0);
            if (e.metaKey || e.ctrlKey) {
                var newtab = true;
            }
            if (!newtab) {
                e.preventDefault();
                setTimeout('document.location = "' + url + '"', 100);
            }
        }
    });
    

    });

4

2 に答える 2

0
  1. あなたが書いたコードを使用することにより<a>、あなたのサイトのすべての要素が影響を受けます。あなたのサイトにメニューがない場合を除いて、それは明らかにあなた自身のサイトへのいくつかのリンクを含むべきです、それは明らかにそうだと私は信じています。
  2. target="_blank"ページを読み込んだ後、jQueryを使用してすべてのリンクに属性を追加できるかもしれません。
于 2013-02-27T20:35:22.760 に答える
0
  1. このコードは、リンク内のドメインをウィンドウドメインと比較しますe.currentTarget.host != window.location.host。-ドメインにwwwプレフィックス(のようなwww.domain.com)があり、それがないリンク(のようなdomain.com/link.html)がある場合、それらは外部リンクと見なされます。
  2. 元のコードは、document.locationを設定する前に遅延を使用して、_trackEventの追跡要求の時間を確保します。すべてのオフサイトリンクを新しいウィンドウで開きたいので、遅延をなくすことができます。

次のコードは、wwwまたはサブドメインプレフィックスに関係なく機能するはずです。

jQuery(function($) {
  $('a[href^="http://"],a[href^="https://"]')
    .not('[href*="mydomain.com"]')
    .click(function(e) {
      var url = this.href;
      _gat._getTrackerByName()._trackEvent("Outbound Links", e.currentTarget.host, url, 0);
      e.preventDefault();
      window.open(url);
    })
});
  • $('a[href^="http://"],a[href^="https://"]')http://--またはで始まるリンクを選択しますhttps://。これには、すべてのアウトバウンドリンクを含める必要があります。
  • .not('[href*="mydomain.com"]')mydomain.com--で始まる内部リンクがある場合に備えて、を含むリンクをすべて破棄しhttp://ます...
  • e.preventDefault();-リンクが正常にたどられないようにします。

また、現在の非同期Google Analyticsコードを使用している場合は、_trackEvent呼び出しを次のように短縮できます。

_gaq.push(['_trackEvent', 'Booking', "Outbound Links", e.currentTarget.host, url, 0]);
于 2013-02-27T22:02:09.590 に答える