2013-07-10 55 views
0

所以,我在主網頁如何動態添加JS/CSS文件,以

jQuery.js 
jQueryMobile.css 
jQueryMobile.js 
mainScript.js 

加載這些但是,如果用戶從其他地方進入我需要動態加載它們。所以我有

scriptCheck.js

if scripts not present 
    //create array of elements containing above files 
    scriptsArray.forEach do |script| 
     head.append(script) 
    end forEach 
end if 

我的問題是,有沒有一種方法,使裝載的同步操作,即等待每個腳本加載和加載下一個之前作何解釋?

+0

在哪裏印刷的原創劇本?看起來像服務器端的工作... – elclanrs

+1

是的。您可以將每個腳本元素的onload處理程序設置爲加載下一個腳本的函數。 –

+0

打印?它們被加載到客戶機的前端。 – DrJonOsterman

回答

-1

檢查了這一點:https://stackoverflow.com/a/2880147/1391624

它採用createXMLHTTPObject()打開併發送一個同步請求。

+0

如果您覺得某個問題在其他地方得到充分回答,請將其標記爲重複,或者至少實際解釋你的答案是如何解決問題的。 –

+0

在這種情況下,你是否建議我應該在我的答案中包含更多的鏈接解決方案? –

+0

如果您正在鏈接的答案按原樣解決此問題,而無需進行任何更改或闡述,那麼您應該將此問題標記爲該問題的重複。一旦您擁有足夠的聲望,您可以使用近距離選票自己做到這一點,但同時您可以將問題標記爲重複。如果鏈接的答案表明可以重新利用以解決此問題的方法,請重現相關部分並進行詳細說明。 –

1

您可以設置每個腳本元素的onload處理程序是加載下一個腳本函數:

var counter = 0 
scriptpaths = [...] 
function loadnextscript(){ 
    var el = document.createElement("script"); 

    el.onload = loadnextscript; 
    el.src = scriptpaths[counter]; 

    document.head.appendChild(el); 

    counter++; 
} 

然後,您可以使用調用此:

if (scriptsnotpresent) { 
    loadnextscript(); 
} 
+1

應該是'el.onload = loadnextscript'而不是'el.onload = loadnextscript()',對不對? –

+0

@JoeEnos是的,沒錯。謝謝。 –