Вы хотите убедиться, что ваш редирект вызывается после вызова кода Google. В настоящее время он запущен onLoad. yC правильно в своем комментарии к вопросу о том, что это, скорее всего, состояние гонки, но нажатие вашего setTimeout
не полностью разрешит это состояние гонки.
Вы можете попробовать вызвать функцию перенаправления после того, как Google вставит себя на страницу.
Код здесь:
(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);
})();
... буквально google добавляет новый тег script
на вашу страницу, а затем загружает в него URL-адрес аналитики. Брендон был прав, предложив отключить асинхронный вызов, но тогда я бы предложил добавить ваш перенаправляющий вызов после строки var s = document
(внутри функции) и надеяться, что это даст Google достаточно времени, чтобы выполнить свою грязную работу. и прежде чем перенаправить.
Если это не сработает, придерживайтесь предложения yC и увеличьте время ожидания. Просто знайте, что задержка перенаправления зависит от времени загрузки и запуска скрипта Google, что не предсказуемо. Я бы, вероятно, поместил этот setTimeout в то же место, где я рекомендовал вызывать функцию перенаправления напрямую. Это означает, что отсчет задержки не начнется, пока на страницу не будет добавлен скрипт Google Analytics.