第一種就是利用ajax方式,第二種是,動態建立乙個script標籤,設定其src屬性,通過把script標籤插入到頁面head來載入js。
動態載入script到頁面大約有倆方法
第一種就是利用ajax方式,把script檔案**從後台載入到前台,然後對載入到的內容通過eval()執行**。第二種是,動態建立乙個script標籤,設定其src屬性,通過把script標籤插入到頁面head來載入js,相當於在head中寫了乙個,只不過這個script標籤是用js動態建立的
比如說是我們要動態地載入乙個callbakc.js,我們就需要這樣乙個script標籤:
如下**就是如何通過js來建立這個標籤(並且加到head中):
var head= document.getelementsbytagname('head')[0];
我設了2個事件監聽函式, 因為在ie中使用onreadystatechange, 而gecko,webkit 瀏覽器和opera都支援onload。事實上this.readystate == 'complete'並不能工作的很好,理論上狀態的變化是如下步驟:
0 uninitialized
1 loading
2 loaded
3 interactive
4 complete
但是有些狀態會被跳過。根據經驗在ie7中,只能獲得loaded和completed中的乙個,不能都出現,原因也許是對判斷是不是從cache中讀取影響了狀態的變化,也可能是其他原因。最好把判斷條件改成this.readystate == 'loaded' || this.readystate == 'complete'
參考jquery的實現我們最後實現為:
var head= document.getelementsbytagname('head')[0];
還有一種簡單的情況就是可以把help()的呼叫寫在helper.js的最後,那麼可以保證在helper.js在載入完後能自動呼叫help(),當然最後還要能這樣是不是適合你的應用。
注意:
1.因為script標籤的src可以跨域訪問資源,所以這種方法可以模擬ajax,解決ajax跨域訪問的問題。
2.如果用ajax返回的html**中包含script,則直接用innerhtml插入到dom中是不能使html中的script起作用的。
粗略的看了下jquery().html(html)的原**,jquery也是先解析傳入的引數,剝離其中的script**,動態建立script標籤,所用jquery的html方法新增進dom的html如果包含script是可以執行的。如:
jquery("#content").html("alert('aa');<\/script>");
載入xib檔案的兩種方式
一 載入xib檔案的兩種方式 1.方法一 newscell是xib檔案的名稱 nsarray objects nsbundle mainbundle loadnibnamed newscell owner nil options nil 2.方法二 uinib nib uinib nibwithni...
載入動態庫的兩種方式(win)
windows環境下動態庫的載入有兩種方式,記錄如下。環境 vs 1.載入動態庫的兩種方式 2.隱式載入 隱式載入在程式開始執行時將dll檔案載入到記憶體中。這種載入方式需要 件,dll檔案,lib檔案。如果.lib檔案沒有放入搜尋路徑,可在程式中使用 pragma comment lib,libp...
Python載入csv檔案的兩種方式
本文主要講解下python載入csv檔案的兩種方式,如果知道如何處理的就不必往下看了!下面來簡單介紹下。例項中的資料集是kaggle的digit recognizer的train.csv檔案,資料格式很特別也很普遍,截圖如下 csv檔案中每行資料的每個特徵列都是用逗號 隔開。csv檔案中除了儲存數值...