2013-08-04 49 views
0

我有一個說5鍵的菜單。在每個項目上單擊,我想要AJAX加載包含一些腳本的HTML文件。加載的文件如下所示:JQuery - 加載HTML文件並獲取腳本?

<div> 
    someContent... 
</div> 
<script> 
FileScriptObject = { 
    init: function() { 
    }, 

    cleanup: function() { 
    }, 
}; 
</script> 

我希望能夠爲$( 「#someDiv」)負載( 「externalFile.html」);並以某種方式獲得該FileScriptObject。可能嗎?

+0

嗯,我有一個自己的潛在答案。我可以在加載的HTML底部添加一些腳本,該腳本將FileScriptObject傳遞給已知的註冊對象,然後可以處理調用它。如window.SomeManager.executeMe(FileScriptObject); –

回答

0

有是一個jQuery函數:

$.ajax({ 
    url: url, 
    dataType: "script", 
    success: success 
}); 
+0

這並不告訴我如何獲取加載的HTML文件中包含的腳本對象。 –

+0

你爲什麼想要抓住它?他們是由jQuery解析出來的嗎? – frhd

+0

當我選擇不同的菜單項時出現這些圖層時,我希望能夠在舊圖層上調用「清理」方法,並在新圖層加載完成時調用「初始化」。我想我解決了它,看到我對原帖的評論。 –

0

如果我明白你的問題,那麼我認爲你有興趣的動態加載新的腳本文件。這完全有可能;例如,如果我想加載一個名爲newScript.js的js文件,那麼我可以創建一個腳本標記<script type="text/javascript" src="newScript.js"></script>並將其添加到標題。要做到這一點,我可以做到以下幾點:

var head = document.getElementByTagName("head")[0]; 
var newScript = document.createElement("script"); 
newScript.type = "text/javascript"; 
newScript.onreadystatechange = function() { 
    if(this.readystate == "complete") { 
     // Script loaded 
    } 
} 
newScript.src = "newScript.js"; 
newScript.onload = function() { 
    // Script loaded 
} 
head.appendChild(newScript); 

注意,有兩種不同的負載處理程序,這是因爲readystate檢查是針對IE和onload是給別人。