js動態載入實現提高網頁載入速度
通常情況下,如果網頁載入的js檔案較多,並且一次性載入完畢的話,會非常的影響網頁載入的速度,當然將會嚴重影響使用者體驗,最終會影響的站點的人氣,所以我們要想辦法解決這個問題。很多時候,載入的js程式碼在當前頁面功能中並不需要,所以如果能夠根據需要動態的載入js檔案,那麼將會極大的提高網頁的載入速度,下面就通過程式碼例項介紹一下如何動態載入js。
程式碼如下:
[HTML] 純文字檢視 複製程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script type="text/javascript"> function JsLoader(){ this.load=function(url){ var script=document.getElementsByTagName("script"); for (index=0;index<script.length;index++){ if(script[index].src && script[index].src.indexOf(url)!=-1){ this.onsuccess(); return; } } scriptEle=document.createElement("script"); scriptEle.type="text/javascript"; scriptEle.src=url; var head=document.getElementsByTagName("head")[0]; head.appendChild(scriptEle); var self=this; scriptEle.onload=function(){ self.onsuccess(); } scriptEle.onerror=function(){ head.removeChild(scriptEle); self.onfailure(); } }; this.onsuccess=function(){}; this.onfailure=function(){}; } function btnClick(){ var jsLoader=new JsLoader(); jsLoader.onsuccess=function(){ sayHello(); } jsLoader.onfailure=function(){ alert("檔案載入失敗!"); } jsLoader.load("http://www.softwhy.com/mytest/js/antzone.js"); } window.onload=function(){ var obt=document.getElementById("bt"); obt.onclick=function(){ btnClick(); } } </script> </head> <body> <label> <input type="button" id="bt" value="載入js檔案"> </label> </body> </html>
上面你的程式碼實現了動態js檔案載入效果,也就是當需要的時候再去載入js檔案,而不是一股腦的完全載入完畢。
antzone.js檔案中的程式碼如下:
[JavaScript] 純文字檢視 複製程式碼function sayHello(){ alert("螞蟻部落歡迎您,js檔案載入完畢"); }
下面介紹一下上面功能的實現過程:
一.程式碼註釋:
1.function JsLoader(){},此函式實現了動態載入效果,它用作建構函式的。
2.this.load=function(url){},宣告一個函式用來動態js檔案,引數是要載入js檔案的路徑。
3.var script=document.getElementsByTagName("script"),獲取頁面所有的script標籤集合。
4.for (index=0;index<script.length;index++),遍歷每一個script標籤。
5.if(script[index].src && script[index].src.indexOf(url)!=-1){
this.onsuccess();
return;
}判斷script是否具有src屬性,這個也是很有必要的,因為script標籤並不一定就是引入外部js檔案,也可以將js程式碼寫在內部,如果有src屬性,那麼在判斷src屬性值是否函式引入js檔案的路徑,如果有的話那麼就呼叫onsuccess()函式,並跳出函式的執行。
6.scriptEle=document.createElement("script"),建立一個script標籤元素。
7.scriptEle.type="text/javascript",設定type屬性。
8.scriptEle.src=url,設定src屬性。
9.var head=document.getElementsByTagName("head")[0],獲取head標籤。
10.head.appendChild(scriptEle),將新建立的script標籤追加到head標籤中。
11.var self=this,將this的引用賦值給變數self,這一點也很重要,因為有時候this的引用並不是指向建構函式建立的物件,這樣的話就可以使用self來替代this。
12.scriptEle.onload=function(){
self.onsuccess();
}
載入完畢則呼叫onsuccess()函式,這裡就能顯現將this引用賦值給self的作用了,因為在這個事件處理函式中this是指向scriptEle,如果再用this就不能夠呼叫onsuccess()。
13.scriptEle.onload=scriptEle.onreadystatechange=function(){
self.onsuccess();
}
上面你的程式碼可以參閱script.onload=script.onreadystatechange=function()的作用一章節。14.scriptEle.onerror=function(){
head.removeChild(scriptEle);
self.onfailure();
}
如果出則執行出現錯誤,則會刪除建立的script標籤,並且執行相應的函式。
15.this.onsuccess=function(){},宣告一個函式成功的時候,呼叫的函式,在使用中會被重寫。
16.function btnClick(){},點選按鈕就會執行此函式。
17.var jsLoader=new JsLoader(),建立一個物件例項。
18.jsLoader.onsuccess=function(){sayHello();},重寫onsuccess函式。
二.相關閱讀:
1.getElementsByTagName()函式可以參閱document.getElementsByTagName()一章節。
2.indexOf()函式可以參閱javascript indexof()一章節。
3.createElement()函式可以參閱js createElement()一章節。
相關文章
- instant.page:提高網站頁面載入速度網站
- SyntaxHighlighter 頁面動態js載入方式整理JS
- 優雅的實現動態載入 css、jsCSSJS
- 提高網站載入速度的一些小技巧網站
- Nginx開啟gzip壓縮大幅提高頁面載入速度Nginx
- JS實現載入層JS
- js實現 web頁面的滾動條下拉時載入更多JSWeb
- 提高網站載入速度的五大方法網站
- 前端網頁載入速度緩慢優化策略前端網頁優化
- javascript如何動態載入js檔案JavaScriptJS
- 線上直播系統原始碼,實現翻頁載入、下拉滾動載入原始碼
- js 進入頁面載入的方法JS
- 一種實現 MediaWiki 分頁面載入 JS 的思路JS
- 滾動載入圖片(懶載入)實現原理
- 想獲取JS載入網頁的源網頁的原始碼,不想獲取JS載入後的資料JS網頁原始碼
- 圖片懶載入js實現JS
- 動態載入UserControl
- 移動端無限滾動載入 js實現原理JS
- js動態載入 js檔案和 css檔案JSCSS
- ajax實現頁面非同步載入非同步
- Umi + qiankun 實現動態載入子應用路由路由
- DLL動態庫動態載入
- Nginx效能優化功能- Gzip壓縮(大幅度提高頁面載入速度)Nginx優化
- JavaScript系列:動態建立iframe並載入頁面JavaScript
- php 自動類載入類 composer.json 實現自動載入PHPJSON
- 直播平臺搭建,JS實現頁面下拉載入資料操作JS
- python動態載入(三)Python
- QLibrary 載入動態庫
- vue 動態載入元件Vue元件
- goloader - golang動態載入Golang
- Java動態載入類Java
- Spring Boot 如何熱載入 jar 實現動態外掛?Spring BootJAR
- Spring Boot 如何熱載入jar實現動態外掛?Spring BootJAR
- vue 實現tab切換動態載入不同的元件Vue元件
- 藉助 Webpack 靜態分析能力實現程式碼動態載入Web
- JS載入JS
- angular 監聽 Windows 滾動事件 實現頁面滾動載入AngularWindows事件
- 動態頁面資料載入不全的問題
- JS 頁面載入過程問題JS