Ian Pitts 之前给我分享了这个技巧,我直到现在才整理好并发布出来。感谢 Ian!
Google Analytics(此处为简介视频)功能强大,但一个显著的缺失功能是关于**外链点击**的数据。如果您正在使用 jQuery,只需将以下代码添加到您的页面中,您就可以立即开始追踪外链点击了。
<script type="text/javascript">
// <![CDATA[
$(document).ready(function() {
$("a[@href^='http://']:not(.noAutoLink)").addClass("offSite").attr('target', '_blank').bind('click keypress', function(event) {
var code=event.charCode || event.keyCode;
if(!code || (code && code == 13)) {
if(pageTracker){
var fixedLink = this.href;
fixedLink = fixedLink.replace(/https?:\/\/(.*)/,"$1");
fixedLink = '/outgoing/' + fixedLink;
pageTracker._trackPageview(fixedLink);
};
};
});
// ]]>
</script>
简单(易懂)的英语
- 目标是所有带有 http:// 的 href 属性(假设您的内部链接使用相对文件路径,就像它们应该的那样)
- 除了那些具有 .noAutoLink 类的链接(可选,但当您想要特意排除某些链接时非常有用)
- 然后它添加一个名为 "offsite" 的类(也是可选的,但可以用作 CSS 钩子来显示某种 "外部链接" 图标,尤其是在您计划使用 target="_blank" 的情况下)
- 然后它添加一个 target="_blank" 属性(不符合 XHTML 标准,但由于它是根据需要由脚本添加的,因此不会影响验证)
- 然后它绑定到 click 和 keypress 事件…… 因此,使用键盘而不是鼠标的用户也会获得此操作
- if(pageTracker) 部分用于检测 GA 的对象
- 然后它使用一些正则表达式来处理 href 属性,使其成为可以在 GA 中追踪的格式
- 构建了一个虚假的链接,它将显示在一个虚构的 /outgoing/ 目录中
- 最后,GA 被告知要记录此新虚假资源的页面浏览量
运行一段时间后(可能需要几天,因为 Google Analytics 不是实时更新的),您可以进入 内容 > 内容细分,找到您的 /outgoing/ 目录。点击它即可查看您最受欢迎的外链!
更新
Ian 在他的博客上发布了此代码的更新/改进。新代码不只是查找 "http://" 来判断是否为外链,而是将主机名与当前站点进行比较。这样,如果您在内部链接中使用完整 URL,它就不会被误认为是外部链接。
很棒的文章!实际上,上周我在 .eduGuru 发布了相同的技术作为概念验证,文章标题是 使用 Google Analytics 追踪外链点击。很高兴看到一个真正可用于生产环境的 JavaScript 代码被发布。
你们做的很棒!继续努力!
不错的文章,Chris。这确实有助于我更好地追踪 GA 结果。感谢分享这个技巧。我已将其发布到 Twitter 上。
继续加油 :)
非常棒。我肯定会在有时间的时候添加它。感谢提醒
我一定哪里做错了!链接没有在新窗口中打开(这是我判断错误的方法——尽管我计划在知道它正常工作后删除该部分)。我收到了这个错误
错误:函数体后缺少 }
源文件:http://……
行:69,列:8
源代码:// ]]>
(它位于这里:http://artmeetscommerce.net/clients.php?page=mindgame)
是代码问题吗?还是我(或其他一些与之冲突的 jQuery 代码)的问题?
我真的很想尝试一下——我修改了 Google 的 JS 代码,该代码使用外部 jQuery 脚本激活追踪器,因此在初始化后添加这个代码将会非常简单。
谢谢!
我之前写过一个 jQuery 插件,它可以自动为外链、下载和 mailto 添加 Google Analytics 追踪
http://devblog.jasonhuck.com/2007/11/19/google-analytics-integration-with-jquery/
虽然它使用了 Google 的旧版追踪脚本,但其他人后来更新了它以使其与新版脚本兼容
http://dvdsmpsn.wordpress.com/2008/06/18/jgoogleanalytics-google-analytics-integration-for-jquery/
jason
很棒,我需要学习更多 jQuery……
大家好……我很高兴你们喜欢这个技巧。自从我和 Chris 讨论过之后,我已经在我们的新网站上更新了这段代码片段。我正在我的网站上发布一篇博文,并在完成时在此处再次评论。新脚本实际上将链接的域名与当前页面域名进行比较,并自动添加操作……而不仅仅是根据链接中是否存在 "http://" 来判断。这对于某些以编程方式生成完整限定 URL 的 CMS 工具很有帮助。
好了……我已经在我的博客上发布了更新后的代码。如果您有兴趣,请查看。
很棒的文章,感谢分享!
对此进行评估非常有趣
很棒的脚本,Chris。虽然我个人不会在每个外链上都添加 _blank 属性。用户应该自己决定是否需要在新窗口中打开。
但是使用 WordPress 的 Stat 插件也可以追踪外链,对吧?这是否是 Google 不喜欢的事情,这意味着他们可能会删除您的 GA 帐户?有人知道吗?
Koew,是的……就我构建的网站而言,在新浏览器窗口中弹出链接是所需的操作。对于其他面向更技术型用户的网站,我不会这样做。无论如何,您可以只从脚本的该部分末尾删除链接的 .attr()。
至于 Google 是否不喜欢这种方法……它实际上是他们在其 API 文档中建议的方法。这与新的事件追踪功能相结合,应该让每个人都确信这种方法是安全的。
我之前写过类似的东西(而且更简洁)。
它确实依赖于 rel="external"(无论如何您都应该使用它),但更改选择器并不难。
http://www.aestheticallyloyal.com/docs/js/track-outgoing.js
Kolber……虽然它更简洁,但它在我的编写时并不适用。我需要能够适应来自 CMS 的动态链接。有些链接是本地的,而其他链接是外部的。将所有链接都设置为 rel="external" 将不起作用,因为本地链接将在 GA 中被错误地追踪。
强烈建议您使用事件追踪而不是 _trackPageview(),前提是您的 GA 配置文件允许这样做。这将防止外链点击计入您的页面浏览量,从而使您的页面浏览量数据更准确。
好东西。只是提醒一下 WordPress 用户,Ultimate Google Analytics 插件也会将其功能的一部分作为追踪外链。我想知道实际代码实现有什么不同?