2010-02-15 83 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()...在页面加载完成后你将不能包含这个脚本。