在新窗口中打开外部链接并跟踪出站点击事件

时间:2013-02-27 20:19:26

标签: jquery google-analytics

我正在使用以下代码来跟踪Google Analytics中的出站链接(在此网站上找到它)。我有两个问题:

  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);
            }
        }
    });
    

    });

2 个答案:

答案 0 :(得分:0)

  1. 使用您编写的代码,您网站的所有<a>元素都会受到影响。这显然应该包含一些指向您自己网站的链接,除非您的网站没有菜单,我相信它显然没有。
  2. 在加载页面后,也许您可​​以使用jQuery为所有链接添加target="_blank"属性。

答案 1 :(得分:0)

  1. 代码会将链接中的域与窗口域进行比较:e.currentTarget.host != window.location.host - 如果您的域名具有www前缀(如www.domain.com)但有一些没有它的链接(例如domain.com/link.html }),它们被视为外部链接。
  2. 原始代码在设置document.location之前使用延迟,以便为_trackEvent的跟踪请求留出时间。由于您希望在新窗口中打开所有场外链接,因此可以消除延迟。
  3. 以下代码应该可以工作,无论任何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]);
    
相关问题