2010-02-15 4 views
1

На веб-сайте, над которым я работаю, мне нужно загрузить скрипт отслеживания через 10 секунд после загрузки страницы. Я нашел a snippet to do so, но я попал в ловушку. После ожидания 10 секунд страница становится белой. URL-адрес, похоже, не изменяется, но страница больше не видна, и пульсация начинает вращаться.Загрузки с задержкой загрузки Javascript

Вот что я использую, чтобы загрузить скрипт:

function $import(src){ 
    var scriptElem = document.createElement('script'); 
    scriptElem.setAttribute('src',src); 
    scriptElem.setAttribute('type','text/javascript'); 
    document.getElementsByTagName('head')[0].appendChild(scriptElem); 
} 

// import with a random query parameter to avoid caching 
function $importNoCache(src){ 
    var ms = new Date().getTime().toString(); 
    var seed = "?" + ms; 
    $import(src + seed); 
} 

// 
// Tracker options go here... 
// 

setTimeout(function(){ 
    $importNoCache("http://tracking.code/url"); 
}, 10 * 1000); 

Есть ли лучший способ сделать это?

EDIT: Я прошел через код Firebug, и скрипты работают так, как должно. Когда отладчик Firebug выключен, он закроет страницу, как я описал выше.

ответ

4

Это произойдет, если скрипт вызывает document.write.

Можете ли вы показать нам сценарий, который вы загружаете?

+0

Загружается этот скрипт: http://www.googleadservices.com/pagead/conversion.js –

+0

Сценарий вызывает 'document.write'. – SLaks

+0

Наверное, сейчас я просто загружу его на оставшуюся страницу. Я не знал об этом 'document.write'. В любом случае спасибо. –

1

Код выглядит хорошо, поэтому проблема, вероятно, в коде отслеживания. Если он содержит вызов document.write(), он будет работать нормально, если он включен нормально, но уничтожьте страницу, когда она будет включена после завершения загрузки страницы.

Редактировать: Да, сценарий отслеживания выполняет d = документ, а затем вызывает d.write() позже ... вы не сможете включить этот скрипт после завершения загрузки страницы.

Смежные вопросы