32

GoogleAnalyticsトラッキングコードの非同期バージョンをウェブサイトに追加しようとしています。

JavaScriptを別のファイルに保存し、そこから呼び出したいのですが。

これが私の.jsファイルに現在あるものです:

function addLoadEvent(func) {
    var oldonload = window.onload;
    if (typeof window.onload != 'function') {
        window.onload = func;
    } else {
        window.onload = function() {
            oldonload();
            func();
        }
    }
}

function loadtracking() {
    var _gaq = _gaq || [];
        _gaq.push(['_setAccount', 'UA-XXXXXXX-X']);
        _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);
        })();
}

addLoadEvent(loadtracking);

そして、これが<head>私のマスターページのタグにあるものです:

<script type="text/javascript" src="js/google-analytics.js" ></script>

ただし、数日経っても統計が得られないため、明らかに問題があります。

私が変更する必要があるアイデアはありますか?

ありがとう、ニール


編集:わかりました...以下のフィードバックの後、.jsファイルの新しい現在の内容を追加します。これが解決された場合に、他の人が同じようなことをしようとしているときに役立つように、最新の状態に保ちます。

var _gaq = _gaq || [];

function loadtracking() {
        window._gaq.push(['_setAccount', 'UA-XXXXXXX-X']);
        window._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);
        })();
}

loadtracking();
4

3 に答える 3

25

変数定義var _gaqは関数内にあります。つまり、その関数内でローカルにスコープされ、グローバルに存在することはありません。Google Analyticsは、グローバル変数に依存しています_gaq。そのような関数内に保持したい場合は、として参照してwindow._gaqください。

于 2010-07-17T03:59:43.897 に答える
14

非同期追跡コードの要点を完全に見逃しています。古い同期GAを含めるのとまったく同じなので、外部ファイルに入れないでください。

window.onloadそして最も重要なのは、追跡コードの発火が遅すぎる可能性があるため、追跡コードを延期しないことです。

非同期GAを使用する場合は、インラインスクリプトタグでドキュメントの上部に配置するだけです。これは、GoogleAnalyticsWebサイトでも推奨されています。

ページまたはテンプレートが使用する可能性のある他のスクリプトの後に、ページのセクションの下部に<head>非同期スニペットを挿入し ます。

于 2010-07-16T10:28:25.397 に答える
1

正直なところ、これらの投稿はかなり古いので、すべて読んだわけではありません。しかし、最近、1000個の静的HTMLファイルである古いWebサイトにGtag(分析追跡用のgoogleタグマネージャー)を追加する必要がありました。非常に古いサイトが言った!私の目的では、パフォーマンスについては心配していませんでしたが、トラフィックを測定して移行できるようにしました。ケースは異なる場合がありますが、以下のコードはGtagの外部jsインクルードで機能します。

上記のコードはレガシーga.js用であるため、このファイルを使用して以下のコードをロードしました

//Added Google Anyltics Tag Container Tracking - included here to min rebuilding DOM 

function loadGoogleAnalytics(){
    var ga = document.createElement('script'); 
    ga.type = 'text/javascript'; 
    ga.async = true;
    ga.src = 'https://www.googletagmanager.com/gtag/js?id=UA-XXXXXXXXX-X';

    var s = document.getElementsByTagName('script')[0];
    s.parentNode.insertBefore(ga, s);
}

loadGoogleAnalytics(); //Create the script 

window.dataLayer = window.dataLayer || [];

function gtag(){dataLayer.push(arguments);}

gtag('js', new Date());

gtag('config', 'UA-XXXXXXXXX-1');
//Confirmed with Google tag Assistant
于 2018-04-08T17:15:19.707 に答える