0

我正在使用下面的代码来跟踪谷歌分析中的出站链接(在这个网站的某个地方找到它)。我有两个问题:

  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. 代码将链接中的域与窗口域进行比较: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 回答
0
  1. 通过使用您编写的代码<a>,您网站的所有元素都会受到影响。这显然应该包括一些指向您自己网站的链接,除非您的网站没有菜单,我相信这显然是有的。
  2. 加载页面后,也许您可​​以使用 jQuery 为target="_blank"所有链接添加属性。
于 2013-02-27T20:35:22.760 回答