2013-02-27 64 views
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); 
         } 
        } 
    }); 
    

    });

回答

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(); - 阻止通常遵循的链接。

另外,如果你使用的电流,异步谷歌分析代码,您可以缩短_trackEvent调用

_gaq.push(['_trackEvent', 'Booking', "Outbound Links", e.currentTarget.host, url, 0]); 
+0

迈克 - 我想你发现了这个问题。我的网站大多是.mydoamin.com。我怀疑www.mydomain.com有一些散户。是否可以将代码配置为考虑这两种情况(甚至是针对此问题的任何子域?) - 这意味着子域也将被视为外部链接。最后,我假设在新窗口中打开链接,不需要实现setTimeout? – user2022284 2013-02-28 01:22:42

+0

@ user2022284 - 更正因为在新窗口中打开而不需要setTimeout延迟。 – mike 2013-02-28 05:02:58

+0

您如何评价下面的链接评论说,在这种情况下,它不太好硬编码域名?想知道您对此的看法:(请参阅博客文章中的最后一段http://www.paulrhayes.com/2009-03/track-outbound-links-using-google-analytics/)thxxx – user2022284 2013-02-28 12:54:02

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