2010-02-15 109 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); 

有沒有更好的方式來做到這一點?

編輯:我跨過Firebug中的代碼,並且腳本的工作原理應該如此。在Firebug的調試器關閉的情況下,如上所述,它會使頁面變爲空白。

回答

4

如果腳本調用document.write,會發生這種情況。

你能告訴我們你正在加載的腳本嗎?

+0

它正在加載此腳本: http://www.googleadservices.com/pagead/conversion.js – 2010-02-15 18:43:49

+0

腳本調用'document.write'。 – SLaks 2010-02-15 18:46:02

+0

我想現在我只是把它加載到頁面的其餘部分。我不知道這個關於'document.write'的問題。不管怎麼說,多謝拉。 – 2010-02-15 18:51:28

1

代碼看起來很好,所以問題可能出現在跟蹤代碼中。如果它包含一個document.write()調用,當正常包含它時它將正常工作,但在頁面加載完成後包含頁面時將其擦除。

編輯: 是的,跟蹤腳本確實是d = document,然後再調用d.write()...在頁面加載完成後你將不能包含這個腳本。