2009-01-18 55 views

回答

10

defer attribute你可以把脚本块,以推迟其执行,直到页面完成加载。

<script src="myscript.js" type="text/javascript" defer> 
// blah blah 
</script> 

虽然我不确定使用此属性的一般建议。

编辑:作为@大卫指出,使用defer="defer"对于XHTML

而且你可以随时把代码中的window.onload事件的内部,使得它执行页面加载:

window.onload = function() { 
    // ad codes here 

}; 

但后面的方法可能会带来一些问题,您可能需要首先对其进行测试。

关于this blog post的更多信息由Dean Edwards编写,着名的javascript packer


编辑:

function loadScript(src) { 
    document.write('<script src="' + src + '" type="text/javascript"></script>'); 
} 

所以生成的代码:如果广告代码本身大小的问题,你可以随时通过通过document.write与脚本注入上述方法结合推迟装载可能看起来像这样:

<script type="text/javascript" defer> 

function loadScript(src) { 
    document.write('<script src="' + src + '" type="text/javascript"></script>'); 
} 

loadScript('http://ads.example.com/advertisements.js'); 

</script> 

但正如我所说,它取决于您获得的具体广告代码。因为document.write的位置会写东西,可能不是你想要的位置。一些修改可能是必要的。

+0

感谢您的回复!我试过这个,它运行得很好。 – britg 2009-01-18 03:10:08

1
function addLoadEvent(func) { 
     var oldonload = window.onload; 
     if (typeof window.onload != 'function') { 
     window.onload = func; 
     } else { 
     window.onload = function() { 
      oldonload(); 
      func(); 
     } 
     } 
    } 

上述代码是添加新的onload事件的好方法,它不会干扰您现有的javascript。然后,您可以使用下面的代码添加新的加载事件来加载广告。

addLoadEvent(function() { // call to loadScript() here }); 
0

我通常会把标签加载到正文标记结束之前的脚本中。 所以它加载在页面的末尾。 这不会给任何验证错误或任何。