it-swarm.com.de

Javascript-Umleitung mit Google Analytics

Ich brauche Hilfe, um herauszufinden, wie ich erfolgreich umleiten kann und dabei Analytics-Code einbezieht.

Der Code für diese Weiterleitungsdatei:

<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>

Dies funktioniert nur dann als Weiterleitung, wenn ich meinen Analytics-Code nicht einfüge. Ich habe versucht, den Code ohne Änderung zu verschieben.

QUESTION Wie kann ich eine Weiterleitung jeglicher Art hinzufügen und trotzdem mit Google Analytics verfolgen können?

Ich habe PHP Redirects ohne Erfolg ausprobiert und bin mir ziemlich sicher, dass htaccess-Redirects nicht helfen, obwohl ich offen für Vorschläge bin.

Der Grund, warum ich eine JavaScript-Weiterleitung verwende, ist, dass ich weiterhin mit Google Analytics nachverfolgen und auch eine kleine Nachricht anzeigen oder eine benutzerdefinierte Seite mit Verzögerung erstellen kann.

Danke für jede Hilfe. Muss nicht JS sein, bitte, jede Eingabe ist willkommen, wenn Sie eine Lösung kennen.

35
TryTryAgain

Mit Meta Refresh arbeitete wie ein Zauber! Legacy FTW! Danke, @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: Ich kann jetzt umleiten, während ich diese Weiterleitungen mithilfe von Google Analytics protokolliere!

Meta Refresh (entnommen aus wikipedia

Beispiele

Nach 5 Sekunden einlegen, um die Seite zu aktualisieren:

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

Nach 5 Sekunden zu http://example.com/ umleiten:

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

Weiterleitung zu http://example.com/ sofort:

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

Hinweis: Mit _gaq.Push können Funktionen in die Warteschlange verschoben werden. Der folgende Code sollte nach 250 Millisekunden (um Zeit für das Tracking-Pixel zu lassen) nach der _trackPageview umgeleitet werden:

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

Wenn Sie den neuen Code GA verwenden, können Sie einfach diese Zeile ga('send', 'pageview'); durch folgenden Code ersetzen:

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

Beispiel vollständig: 

  (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

Ich empfehle Ihnen, Ihren Google Analytics-Code so zu ändern, dass er synchron und nicht asynchron ist, indem Sie ihn wie folgt ändern:

<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>

Dies sollte gewährleisten, dass es ausgeführt wird, bevor der Weiterleitungscode aktiviert wird, und es sollte sich außerhalb des Umleitungsskripts befinden, damit keine Störungen auftreten. Wie Sie es jetzt haben, spielen Sie ein Ratespiel, wie lange das GA - Skript zum Laden braucht und dass es geladen wird und seinen Job in weniger als 3 Sekunden erledigt. Das kann normalerweise der Fall sein, aber es gibt keinen Grund, es so asynchron zu laden, wie Sie es sind und dieses Spiel spielen müssen. Laden Sie es synchron und es wird erledigt, bevor Ihre Javascript-Weiterleitung ausgelöst wird. 

Es ist sogar möglich, die Weiterleitung direkt nach dem GA - Code wie folgt zu platzieren und die Zeit zu reduzieren, die Ihre Platzhalterseite angezeigt wird:

<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

Der bereitgestellte code von Mike funktioniert tatsächlich. Ich fand jedoch, dass das Entfernen des Timers auch völlig funktioniert. Die __utm.gif-Anforderung wird dann abgebrochen, aber alle Informationen wurden gesendet. Das Fenster leitet nur weiter und wartet nicht auf die Antwort (was einfach ein Status von 200 ist). Ich habe das getestet und es scheint gut zu funktionieren. 

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

Meta-Refresh wird im Allgemeinen aus Gründen der Benutzerfreundlichkeit nicht empfohlen (insbesondere mit einer kurzen Verzögerung oder ohne Verzögerung), aber als Fallback für Clients ohne Javascript glaube ich, dass es in diesem Fall vollkommen gültig ist.

Wenn Sie kombinieren den synchronen Aufruf von ga.js mit einer Meta-Aktualisierung aufrufen, erhalten Sie das Beste aus beiden Welten: eine fast sofortige, verfolgte Weiterleitung, wenn JS aktiviert ist; Eine verzögerte, aber immer noch effektive Weiterleitung, falls nicht (und eine harte Verbindung im Körper, falls alles andere fehlschlägt).

<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

Hier gibt es eine gute Antwort: https://www.domsammut.com/code/setting-up-hitcallback-using-google-universal-analytics

Kurz gesagt, Sie würden es mit einem Ereignis tun und die hitCallback-Funktion verwenden.

2
jamescridland

Dieser Ansatz erfordert keine Verzögerung. Führen Sie zunächst den Google Analytics-Code synchron aus und leiten Sie dann um. 

<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