2011-02-02 68 views
1

我只想在窗口大小一定的情况下加载jquery和循环插件。这将稍后更改为仅加载桌面浏览器。 如果我将这段代码放在关闭的body标签之前,它在FF和IE中可以正常工作,但不能在chrome中正常工作。 如果我将代码放在首位,它可以在所有浏览器中使用。 如何在文档结束时使其工作?有条件地在文档结尾加载脚本

http://dl.dropbox.com/u/426954/allora/index.html

if (document.documentElement.clientWidth > 600) { 
    window.onload = function() { 
    //load jquery 
     var j = document.createElement('script'); 
    j.setAttribute('src', 'http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js'); 
    document.getElementsByTagName("head")[0].appendChild(j); 

    //load cycle plugin 
     var c = document.createElement('script'); 
    c.setAttribute('src', 'http://cloud.github.com/downloads/malsup/cycle/jquery.cycle.all.latest.js'); 
    document.getElementsByTagName("head")[0].appendChild(c); 

    //load custom script 
     var elScript = document.createElement('script'); 
    elScript.setAttribute('src', 'js/script.js'); 
    document.getElementsByTagName("head")[0].appendChild(elScript); 
    } 
    } 
+0

如果它工作在头,为什么不那样做? – Neil 2011-02-02 12:45:36

回答

3

因此,只要把它的头部。仅仅因为绩效指导要求你把它们放在脚本的底部并不意味着把它们放在脑海中是一种罪过。在这种情况下,你不会失去任何性能,因为它是所有处理函数分配给onload事件,这将等到DOM被加载运行反正

+0

谢谢,实际上IE8确实会抛出一个错误:jquery是undefined – paul 2011-02-02 12:49:06

+0

所以,我发现这个:http://www.phpied.com/dynamic-script-and-style-elements-in-ie/,如果可以的话是不是在IE中工作的原因? – paul 2011-02-02 13:13:37

2

使用本

$(document).ready(function() { 

}); 

代替的

window.onload 

,并把“如果”变成功能