web-dev-qa-db-ja.com

Google AnalyticsでのJavaScriptリダイレクト

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コードを含めない場合にのみリダイレクトとして機能します。私はコードを変更せずに動かしてみました。

[〜#〜] question [〜#〜]リダイレクトを追加して、Googleアナリティクスで追跡できるようにするにはどうすればよいですか?

私はPHPリダイレクトを成功させずに試しましたが、提案にオープンですがhtaccessリダイレクトが役に立たないと確信しています。

私がJavaScriptリダイレクトを使用している理由は、Googleアナリティクスで追跡を続け、少しのメッセージを表示したり、遅延のあるカスタムページを作成したりできるようにするためです。

助けてくれてありがとう。 JSである必要はありません。解決策を知っていれば、どんな入力でも歓迎します。

36
TryTryAgain

meta refresh を使用することは魅力のように機能しました!レガシー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>

RECAP:Google Analyticsを使用してリダイレクトを追跡しながらリダイレクトできるようになりました。

メタリフレッシュ( wikipedia から取得)

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/">
7
TryTryAgain

注意: _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);
})();
42
mike

新しい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";
  }
});
20
Jarrod

次のように変更して、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>
14
jfriend00

コード提供Mike は実際に機能します。ただし、タイマーを削除しても完全に機能することがわかりました。その後、__ 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);
})();
9
Ghans

メタリフレッシュは、ユーザビリティの問題があるため(特に、短い、または遅延がないため)推奨されませんが、JavaScriptを使用しないクライアントのfallbackとして、この場合は完全に有効だと思います。

combineメタリフレッシュを伴う同期ga.js呼び出しの場合、両方のメリットを最大限に活用できます。そうでない場合は遅延しますが、依然として有効なリダイレクト(および他のすべてが失敗した場合に備えて、本文にハードリンク)。

<html>
<head>
    <!--For JS disabled: decent delay, both for usability and to allow plenty of time for JS to work if enabled -->
    <meta http-equiv="refresh" content="5;https://market.Android.com/developer?pub=Fractal%20Systems"/>
    <script>
        var _gaq = _gaq || [];
        _gaq.Push(['_setAccount', 'UA-1234567-8']);
        _gaq.Push(['_trackPageview']);
    </script>
    <!--Synchronous call to ensure tracking fires before JS redirect-->
    <script type="text/javascript" src="//www.google-analytics.com/ga.js"></script>
    <script>
        /* if JS is enabled this will normally fire well before the meta refresh delay ends: an almost instantaneous redirect */
        window.location="https://market.Android.com/developer?pub=Fractal%20Systems";
    </script>
</head>
<body>
    <!-- Include a hard link in case both js and the meta refresh fail -->
    <p>Redirecting you to <a href="https://market.Android.com/developer?pub=Fractal%20Systems">https://market.Android.com/developer?pub=Fractal%20Systems</a></p>
</body></html>
2
CfSimplicity

ここに良い答えがあります: https://www.domsammut.com/code/setting-up-hitcallback-using-google-universal-analytics

つまり、イベントを使用してそれを行い、hitCallback関数を使用します。

2
jamescridland

このアプローチは遅延を必要としません。最初にGoogleアナリティクスコードを同期的に実行してからリダイレクトします。

<html>
<head>
<script src="//www.google-analytics.com/analytics.js"></script>
  <script>
    var tracker = ga.create('UA-xxxxxxxx-x', 'auto');
    tracker.send('pageview');
    window.location='http://your-url.com';
  </script>
</head>
<body>
</body>
</html>
0
Karthik Sankar