0

我想从浏览器栏中删除谷歌分析 URL 跟踪代码,这样当用户复制/粘贴 URL 以共享时,他们不会随身携带所有跟踪数据,这既无用又能够歪曲数据在路上。

所以我使用 history.js 运行 replaceState 基本上在短暂的暂停后从 URL 中删除跟踪数据。

<script type="text/javascript">
setTimeout(function() {
    if( window.location.search.indexOf( "utm_campaign" ) >= 1 ) {
        window.history.replaceState( null, document.title, window.location.pathname);
    }
}, 1000 );
</script>

有没有人看到这种方法有任何可能的并发症或问题?

4

1 回答 1

1

您可能遇到的唯一问题是,在您的超时代码运行时,Google Analytics(分析)可能尚未完全加载。

借助 Google Analytics 跟踪器,有一个 API 可以让函数在 GA 数据发送到 Google 后排队。

你可以这样做:

var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXX-X']);
_gaq.push(['_trackPageview']);
_gaq.push(function() {
  var newPath = location.pathname + location.search.replace(/[?&]utm_[^?&]+/g, "").replace(/^&/, "?") + location.hash;
  if (history.replaceState) history.replaceState(null, '', newPath);
});

(function() {
  var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();

注意第 4 行,其中一个函数被推送到 _gaq 对象。

此函数将在 GA 请求发送后直接替换 URL。

于 2014-08-27T01:38:59.537 回答