4

したがって、これは機能します:

var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-65432-1']);
_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);
})();

_gaq.push(['_trackEvent', 'Videos', 'Play', 'Gone With the Wind']);

しかし、訪問者が次のようなリンクでアクセスできる場合はどうなりhttp://example.com?autoPlay=Windますか?したがって、ビデオはすでに要求されており、再生を開始して次のように生成します。

var _gaq = _gaq || [];
_gaq.push(['_trackEvent', 'Videos', 'Play', 'Gone With the Wind']);

イベント。ただし、通常のトラッキングコードは引き続きページの下部で実行されるため、次の非同期があります。

var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-65432-1']);
_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);
})();

それで、少なくとも_setAccount一番上に移動する必要がありますか、それとも電話をかけるまでにすでにキューに入っているので機能しますga.jsか?または、自分でキューを作成することもできます...しかし、ここでは、以前から何かがすでにキューにある場合は、削除しないようにしという手がかりが表示されます。また、さまざまなコンテキストに対応する複数のトラッカーがあります...これは、順序を完全に無視することが完全に合法であることを意味しますか?簡単な質問で申し訳ありませんが、非同期で許可されているものと許可されていないものについてはまったく何も見つかりません。_gaq_setAccount

手伝ってくれてありがとう!

4

2 に答える 2

5

または_setAccountのようなデータをログに記録するコマンドの前に持っている必要があります。_trackPageview_trackEvent

まだ実行されていない_trackEventときに送信されるトラッキングピクセルを見ると、のようなデフォルトのアカウントにログが記録されていることがわかります。_setAccountUA-XXXXX-X

これは、分析コードを実行したいが、本番追跡データを汚染したくない開発システムまたはステージングシステムで使用しました。行をコメントアウトする_setAccountと、すべてのデータが存在しないアカウントに記録されます。


'mumble'という名前のトラッカーを初期化したことがないと仮定します(_gaq.push(['mumble._setAccount', 'UA-65432-1'])次のコードは、未開始のトラッカーのIDが'UA-XXXXX-X'であることを示しています。

echo(_gat.getTrackerByName('mumble')_getAccount())
于 2013-02-03T04:21:51.453 に答える
2

今それはします:

var _gaq = _gaq || [];
if(_gaq.unshift){
    _gaq.unshift(['_setAccount', 'UA-65432-1']);
} else {
    _gaq.push(['_setAccount', 'UA-65432-1']);
}
_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);
})();

したがって、解決策は、 whileがpush配列の最後に追加され、whileunshiftが最初に追加されることです。

問題は、iframe gaがすでにロードされていて、それが配列ではなく、カスタムpushメソッドを持つオブジェクトである場合です。その場合は、元のコードにフォールバックしましょう。あなた自身のホームページ内では、アカウントIDは同じであり、とにかく機能します。

于 2013-02-10T02:57:00.223 に答える