就在前面:該項目不使用JQuery。動態加載腳本後訪問變量
我們有一些第三方的JavaScript;它的大,毛茸茸的,並不需要經常使用,所以我們要動態加載它,只有當我們需要:
function loadBigHairyCode()
{
var file = document.createElement('script')
file.setAttribute("type","text/javascript")
file.setAttribute("src","path/to/big/ugly/script/file.js")
document.getElementsByTagName("head")[0].appendChild(file)
magic_needs_to_happen_here
}
腳本加載工作得很好,包括我們在這裏不會出一些相應的CSS。
加載的文件定義了一個構造函數(稱爲UglyGlobalFunc
),我們在其他地方以通常的方式使用(var foo = new UglyGlobalFunc(....)
)。問題是,因爲該文件的其餘部分有點醜陋,我們需要修復它以使其吸收較少。具體而言,在這裏我向您展示「魔法需要在這裏發生」上面的一點,我想寫的
UglyGlobalFunc.prototype.BodgeBodgeBodge = function() {....}
就像如果我是編輯底層文件的等價物。
但是這樣做失敗了,因爲在代碼中,UglyGlobalFunc是未定義的,這是有道理的。對於像window.UglyGlobalFunc.proto...
這樣簡單的間接級別也是如此。所以我的問題是:
動態加載的內容是否可以在該執行點(魔法需要發生的地方)訪問?或者,在loadBigHairyCode()返回並且瀏覽器經歷某種刷新週期之後,它們是否變爲「真實」?
如果是,那我該如何訪問它們?某種getGlobalVariableByName(「string」)函數?
如果不是,那麼... aieee。正常的理智的人如何去做這種事情?
是的,現在看起來更好:)。我會刪除我以前的評論,現在不相關。 – Teemu
@Teemu,謝謝你:-) –
@Teemu,這種方式腳本不會阻止頁面加載,稱爲'async'。 –