使用 Google Analytics 进行 Javascript 重定向

IT技术 javascript redirect google-analytics subdomain subdirectory
2021-03-10 01:59:10

我需要帮助弄清楚如何在包含 Analytics 代码的同时成功重定向。

该重定向文件的代码:

<head>
<script type="text/javascript">
function delayedRedirect(){
    window.location = "https://market.android.com/developer?pub=Fractal%20Systems"
}
</script>
<script type="text/javascript">

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-1234567-8']); <!--I have my real ID there-->
  _gaq.push(['_trackPageview']);

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

</script>
</head>
<body onLoad="setTimeout('delayedRedirect()', 3000)">
<h2>ADW.BuuF.Theme is no more! You will be redirected to new and better apps in 3 seconds.</h2>
</body>
</html>

仅当我不包含我的 Analytics 代码时,这才用作重定向。我试过在不做任何更改的情况下移动代码。

问题 如何添加任何类型的重定向,并且仍然能够使用 Google Analytics 进行跟踪?

我已经尝试过 PHP 重定向但没有成功,我很确定 htaccess 重定向不会有帮助,尽管我愿意接受建议。

我使用 JavaScript 重定向的原因是我可以继续使用 Google Analytics 进行跟踪,并显示一条小消息或制作带有延迟的自定义页面。

谢谢你的帮助。不必是 JS,如果您知道解决方案,欢迎任何输入。

6个回答

注意:_gaq.push允许将函数推入队列。以下代码应在 _trackPageview 之后 250 毫秒后重定向(为跟踪像素留出时间):

var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-1234567-8']);
_gaq.push(['_trackPageview']);
_gaq.push(function() {
    setTimeout(function() {
        window.location = "https://market.android.com/developer?pub=Fractal%20Systems";
    }, 250);
});

(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);
})();
我不相信你需要超时 - 对图像的请求应该总是在重定向之前发出 - 客户端是否从未收到任何数据并不重要
2021-04-19 01:59:10
@mike你还记得你在哪里找到关于使用谷歌延迟的说明吗?
2021-04-21 01:59:10
完美的答案。您可以在正文中向重定向 url 添加一个简单的文本链接,以便没有 javascript 的用户可以访问重定向 url。此外,可以在此处找到有关推送功能部分的 google 参考文档:developers.google.com/analytics/devguides/collection/gajs/...
2021-04-29 01:59:10
@Simon_Weaver 同意客户端从不接收任何数据并不重要,但看起来(至少对于 Chrome 和 Firefox)如果窗口在请求启动后变化太快,浏览器将不会发出跟踪像素请求。谷歌甚至有关于使用延迟的说明,但他们的代码被搞砸了,混合了同步和异步风格的分析。
2021-05-04 01:59:10
有些人会阻止 GA,因此使用<meta>标签重定向作为后备是一个好主意。
2021-05-16 01:59:10

如果您使用的是新的 GA 代码,您只需将此行替换ga('send', 'pageview');为以下代码:

ga('send', 'pageview', {
  'hitCallback': function() {
      window.location = "http://www.your-site.com";
  }
});

完整示例:

  (function(i,s,o,g,r,a,m){
    i['GoogleAnalyticsObject']=r;
    i[r]=i[r]||function() {
        (i[r].q=i[r].q||[]).push(arguments)
    },i[r].l=1*new Date();
    a=s.createElement(o),
    m=s.getElementsByTagName(o)[0];
    a.async=1;
    a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');

ga('create', 'UA-xxxxxxx-2', 'auto');

ga('send', 'pageview', {
  'hitCallback': function() {
      window.location = "http://www.your-site.com";
  }
});
auto 应该被引用
2021-04-17 01:59:10

我建议将您的 Google Analytics 代码更改为同步而不是异步,方法是将其更改为:

<script type="text/javascript">
  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-1234567-8']);
  _gaq.push(['_trackPageview']);
</script>
<script type="text/javascript" src="http://www.google-analytics.com/ga.js"></script>

这应该保证它在您的重定向代码启动之前运行,并且它应该不受您的重定向脚本的影响,因此没有干扰。正如您现在所拥有的那样,您正在玩​​一个猜谜游戏,猜测 GA 脚本需要多长时间才能加载,并且它将在 3 秒内加载并完成工作。通常可能是这种情况,但没有理由像您一样异步加载它并且必须玩那个游戏。同步加载它,它会在您的 javascript 重定向触发之前完成它的工作。

甚至可以像这样将重定向直接放在 GA 代码之后,并最大限度地减少占位符页面的显示时间:

<script type="text/javascript">
  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-1234567-8']);
  _gaq.push(['_trackPageview']);
</script>
<script type="text/javascript" src="http://www.google-analytics.com/ga.js"></script>
<script type="text/javascript">
  window.location = "https://market.android.com/developer?pub=Fractal%20Systems";
</script>
谢谢,这确实适用于我尝试过的所有重定向方法。很高兴知道。
2021-04-25 01:59:10

提供的代码麦克工作确实。但是,我发现删除计时器也完全有效。__utm.gif 请求随后被中止,但所有信息都已发送。窗口只是重定向而不等待回复(这只是一个 200 状态)。我对此进行了测试,它似乎运行良好。

var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-1234567-8']);
_gaq.push(['_trackPageview']);
_gaq.push(function() {
  window.location = "https://market.android.com/developer?pub=Fractal%20Systems";
});


(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);
})();
这个解决方案效果很好……但是如果用户禁用了 JavaScript,GA 不仅不起作用,而且页面也不会重定向?为了meta以防万一,最好在此脚本之后进行重定向吗?
2021-04-23 01:59:10

使用元刷新就像一个魅力!传统FTW!谢谢,@Balexandre

<html>
<head>
<meta http-equiv="refresh" content="5; url=https://market.android.com/developer?pub=Fractal%20Systems">
<script type="text/javascript">

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-1234567-8']);
  _gaq.push(['_trackPageview']);

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

</script>
</head>
<body>
<h2>ADW.BuuF.Theme is no more! You will be redirected to new and better apps in 5 seconds.</h2>
</body>
</html>

回顾:我现在可以在使用 Google Analytics 跟踪这些重定向的同时进行重定向!

元刷新(取自维基百科

例子

放置在里面 5 秒后刷新页面:

<meta http-equiv="refresh" content="5">

5 秒后重定向到http://example.com/

<meta http-equiv="refresh" content="5; url=http://example.com/">

立即重定向到http://example.com/

<meta http-equiv="refresh" content="0; url=http://example.com/">
@DS_web_developer 这个解决方案对我有用,你可以尝试简单地将content=5更改为其他值,但这不是最健壮的......你应该使用stackoverflow.com/a/8692588/805031
2021-04-26 01:59:10
关于如何快速重定向(而不是 5s)的任何想法?
2021-05-10 01:59:10