Googleアナリティクスの非同期バージョンが含まれているページが完全に読み込まれていないが、ユーザーがブラウザを閉じるか、別のページに移動したときに何が起こるかわかりません。ユーザーがページから離れてもGoogleアナリティクスが読み込まれるようにするにはどうすればよいですか?
アナリティクスが私が想定しているように記録されない場合、それが確実に行われる方法はありますか?
もしそうなら、どのように機能しますか?
Googleアナリティクスの非同期バージョンが含まれているページが完全に読み込まれていないが、ユーザーがブラウザを閉じるか、別のページに移動したときに何が起こるかわかりません。ユーザーがページから離れてもGoogleアナリティクスが読み込まれるようにするにはどうすればよいですか?
アナリティクスが私が想定しているように記録されない場合、それが確実に行われる方法はありますか?
もしそうなら、どのように機能しますか?
のように閉じられる前にロードされます。あなたは、種類の彼らがこのように、ページに追加リソースを追跡することによって、Googleの分析スタッフエンジニアを逆にすることができます:
var googleAnalyticsDidTheThing = false;
// ga_src is the src to a script that Google dynamically adds to your page
// this is your asynchronous code
var ga_src = "something.google.com/ga.js";
var ga_script;
var id = setInterval(function() {
var scripts = document.getElementsByTagName("script");
for (var i=0, len=scripts.length; i<len; i++) {
var script = scripts[i];
if (script.src === ga_src) { ga_script = script; break; }
}
var cb = function() {
googleAnalyticsDidTheThing = true;
};
ga_script.onload = cb;
// This one's for IE
ga_script.onreadystatechange = function() {
if (this.readystate === "complete") cb();
}
}, 50);
しかし、問題は途中までしかそこにあなたを取得ということです。あなたは@nidhinが述べたようにwindow.onunload
を使って、それが完了しているかどうかを調べることができます。ただし、javascriptはシングルスレッドなので、一度に1つのプロセスしか実行できません。だから、私は、あなたがバックグラウンドで実行するga_script
のブロック機能を使わずに、ページを終了することをユーザーがブロックする方法は全く見当たりません。したがって、Googleがその作業を完了したかどうかを確認することはできますが、Googleが完了できるかどうかは実際は確認できません。
しかし、自分のサーバーにいくつかの情報を送ることができます(ページは残るかもしれませんが、データはまだ送信されます)。実際に何人のユーザーがこれを行うかに関する統計を収集し、エラーです。もしあなたが本当に決まっていれば、自分自身を追跡することを試みることさえできます。
は、Google Analyticsを確認することができ、ウィンドウは、これはおそらく不可能です。この
<script type="text/javascript">
window.onunload = checkIfAnalyticsLoaded;
function checkIfAnalyticsLoaded() {
if (window._gat && window._gat._getTrackerByName()) {
// Do tracking with new-style analytics
} else if (window.urchinTracker) {
// Do tracking with old-style analytics
} else {
// Probably want to cap the total number of times you call this.
setTimeout(500, checkIfAnalyticsLoaded();
}
}
</script>
これでページが閉じられたり、スクリプトがロードされたり実行されるのを待ったりすることはありません。関数が一度実行されると、ウィンドウが閉じます。 – RobG