這篇文章主要為大家詳細介紹了動態載入JavaScript檔案的兩種方法,有興趣的小夥伴們可以參考一下
第一種便是利用ajax方式,把script檔程式碼從背景載入到前台,而後對載入到的內容經過eval()實作程式碼。第二種是,動靜創建一個script標籤,配置其src屬性,經過把script標籤插入到頁面head來載入js,相當於正在head中寫了一個 ,只可是這個script標籤是用js動靜創建的
比喻說是我們要動靜地載入一個callbakc.js,我們就必要多麼一個script標籤:
程式碼如下:
以下程式碼就是如何透過js來建立這個標籤(並且加入head):
程式碼如下:
var head= document.getElementsByTagName('head')[0]; var script= document.createElement('script'); script.type= 'text/javascript'; script.src= 'call.js'; head.appendChild(script);
當載入完call.js, 我們就要呼叫其中的方法。不過在header.appendChild(script)之後我們不能馬上呼叫其中的js。因為瀏覽器是非同步載入這個js的,我們不知道他什麼時候載入完。然而我們可以透過監聽事件的方法來判斷helper.js是否載入完成。 (假設call.js中有一個callback方法) 程式碼如下:
var head= document.getElementsByTagName('head')[0]; var script= document.createElement('script'); script.type= 'text/javascript'; script.onreadystatechange= function () { if (this.readyState == 'complete') callback(); } script.onload= function(){ callback(); } script.src= 'helper.js'; head.appendChild(script);
我設了2個事件監聽函數, 因為在ie中使用onreadystatechange, 而gecko,webkit 瀏覽器和opera都支援onload。事實上this.readyState == 'complete'並不能運作的很好,理論上狀態的變化是以下步驟:
1.uninitialized
2.loading
3.loaded
4.interactive
5.complete
但是有些狀態會被跳過。根據經驗在ie7中,只能獲得loaded和completed中的一個,不能都出現,原因也許是對判斷是不是從cache中讀取影響了狀態的變化,也可能是其他原因。最好把判斷條件改成this.readyState == 'loaded' || this.readyState == 'complete'
參考jQuery的實作我們最後實作為: 程式碼如下:
var head= document.getElementsByTagName('head')[0]; var script= document.createElement('script'); script.type= 'text/javascript'; script.onload = script.onreadystatechange = function() { if (!this.readyState || this.readyState === "loaded" || this.readyState === "complete" ) { help(); // Handle memory leak in IE script.onload = script.onreadystatechange = null; } }; script.src= 'helper.js'; head.appendChild(script);
還有一個簡單的情況就是可以把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是可以執行的。如:
以上就是動態載入JavaScript檔案的方法,希望對大家的學習有所幫助。

JavaScript字符串替換方法詳解及常見問題解答 本文將探討兩種在JavaScript中替換字符串字符的方法:在JavaScript代碼內部替換和在網頁HTML內部替換。 在JavaScript代碼內部替換字符串 最直接的方法是使用replace()方法: str = str.replace("find","replace"); 該方法僅替換第一個匹配項。要替換所有匹配項,需使用正則表達式並添加全局標誌g: str = str.replace(/fi

因此,在這裡,您準備好了解所有稱為Ajax的東西。但是,到底是什麼? AJAX一詞是指用於創建動態,交互式Web內容的一系列寬鬆的技術。 Ajax一詞,最初由Jesse J創造

本文討論了在瀏覽器中優化JavaScript性能的策略,重點是減少執行時間並最大程度地減少對頁面負載速度的影響。

本文討論了使用瀏覽器開發人員工具的有效JavaScript調試,專注於設置斷點,使用控制台和分析性能。

將矩陣電影特效帶入你的網頁!這是一個基於著名電影《黑客帝國》的酷炫jQuery插件。該插件模擬了電影中經典的綠色字符特效,只需選擇一張圖片,插件就會將其轉換為充滿數字字符的矩陣風格畫面。快來試試吧,非常有趣! 工作原理 插件將圖片加載到畫布上,讀取像素和顏色值: data = ctx.getImageData(x, y, settings.grainSize, settings.grainSize).data 插件巧妙地讀取圖片的矩形區域,並利用jQuery計算每個區域的平均顏色。然後,使用

本文將引導您使用jQuery庫創建一個簡單的圖片輪播。我們將使用bxSlider庫,它基於jQuery構建,並提供許多配置選項來設置輪播。 如今,圖片輪播已成為網站必備功能——一圖胜千言! 決定使用圖片輪播後,下一個問題是如何創建它。首先,您需要收集高質量、高分辨率的圖片。 接下來,您需要使用HTML和一些JavaScript代碼來創建圖片輪播。網絡上有很多庫可以幫助您以不同的方式創建輪播。我們將使用開源的bxSlider庫。 bxSlider庫支持響應式設計,因此使用此庫構建的輪播可以適應任何

數據集對於構建API模型和各種業務流程至關重要。這就是為什麼導入和導出CSV是經常需要的功能。在本教程中,您將學習如何在Angular中下載和導入CSV文件


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SublimeText3漢化版
中文版,非常好用

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能