2011-02-02 70 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 

,並把「如果」變成功能