Это, вероятно, невозможно. Вы можете отредактировать материал Google Analytics, отследив ресурсы, которые они добавляют на страницу, например:
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);
Но проблема в том, что вы попадаете на полпути. Вы можете проверить, если это сделано, используя window.onunload
, как упоминалось @nidhin. Однако, поскольку javascript является однопоточным, одновременно может выполняться только один процесс. Таким образом, я не вижу возможности для вас заблокировать выход пользователя из страницы, не блокируя также возможность ga_script
работать в фоновом режиме. Следовательно, вы можете проверить, завершил ли Google свою работу, но вы не можете убедиться, что Google может завершить.
Вы можете, однако, отправить некоторую информацию на свой собственный сервер (страница может уйти, но данные все равно будут отправлены) и собрать статистику о том, сколько пользователей на самом деле это делают, чтобы понять, какова ваша погрешность является. Вы могли бы даже попытаться сделать часть отслеживания самостоятельно, если вы действительно настроены.