最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

移動(dòng)端使用localStorage緩存Js和css文的方法(web開發(fā))

 更新時(shí)間:2016年09月20日 09:54:44   作者:清山博客  
這篇文章主要介紹了web移動(dòng)端使用localStorage緩存Js和css文的方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下

將jquery和公共樣式緩存到localStorage,可以減少Http請求,從而優(yōu)化頁面加載時(shí)間,下面的代碼可以實(shí)現(xiàn)此功能:

<script type="text/javascript"> 
//入口函數(shù) 
if (window.localStorage) { 
initJs(); 
initCss("css", "/gfdzp201508257998/Turntable/Style/css_whir.css"); 
} else { 
addFile("/gfdzp201508257998/Turntable/Script/jquery-1.8.3.min.js", "js"); 
addFile("/gfdzp201508257998/Turntable/Script/whir.turntable.js", "js"); 
addFile("/gfdzp201508257998/Turntable/Style/css_whir.css", "css"); 
} 
//第一步:加載頁面js:先加載jQuery后加載用戶腳本 
function initJs() { 
var name = "jquery"; 
var url = "/gfdzp201508257998/Turntable/Script/jquery-1.8.3.min.js"; 
var xhr; 
var js = window.localStorage ? localStorage.getItem(name) : ""; 
if (js == null || js.length == 0) { 
if (window.ActiveXObject) { 
xhr = new ActiveXObject("Microsoft.XMLHTTP"); 
} else if (window.XMLHttpRequest) { 
xhr = new XMLHttpRequest(); 
} 
xhr.open("GET", url); 
xhr.send(null); 
xhr.onreadystatechange = function () { 
if (xhr.readyState == 4 && xhr.status == 200) { 
js = xhr.responseText; 
localStorage.setItem(name, js); 
js = js == null ? "" : js; 
addTxt(js, "js"); 
initTurntable(); //確保先引用Jquery 
} 
}; 
} else { 
addTxt(js, "js"); 
initTurntable(); 
} 
} 
//加載自定義腳本 
function initTurntable() { 
var name = "turntable"; 
var url = "/gfdzp201508257998/Turntable/Script/whir.turntable.js"; 
var xhr; 
var js = window.localStorage ? localStorage.getItem(name) : ""; 
if (js == null || js.length == 0) { 
if (window.ActiveXObject) { 
xhr = new ActiveXObject("Microsoft.XMLHTTP"); 
} else if (window.XMLHttpRequest) { 
xhr = new XMLHttpRequest(); 
} 
xhr.open("GET", url); 
xhr.send(null); 
xhr.onreadystatechange = function () { 
if (xhr.readyState == 4 && xhr.status == 200) { 
js = xhr.responseText; 
localStorage.setItem(name, js); 
js = js == null ? "" : js; 
addTxt(js, "js"); 
} 
}; 
} else { 
addTxt(js, "js"); 
} 
} 
//第二步:初始化Css 
function initCss(name, url) { 
var xhr; 
var css = window.localStorage ? localStorage.getItem(name) : ""; 
if (css == null || css.length == 0) { 
if (window.ActiveXObject) { 
xhr = new ActiveXObject("Microsoft.XMLHTTP"); 
} else if (window.XMLHttpRequest) { 
xhr = new XMLHttpRequest(); 
} 
xhr.open("GET", url); 
xhr.send(null); 
xhr.onreadystatechange = function () { 
if (xhr.readyState == 4 && xhr.status == 200) { 
css = xhr.responseText; 
localStorage.setItem(name, css); 
css = css == null ? "" : css; 
css = css.replace(/images\//g, "style/images/"); 
addTxt(css, "css"); 
} 
}; 
} else { 
css = css.replace(/images\//g, "style/images/"); 
addTxt(css, "css"); 
} 
} 
//輔助方法1:動(dòng)態(tài)添加js,css文件引用 
function addFile(url, fileType) { 
var head = document.getElementsByTagName('HEAD').item(0); 
var link; 
if (fileType == "js") { 
link = document.createElement("script"); 
link.type = "text/javascript"; 
link.src = url; 
} else { 
link = document.createElement("link"); 
link.type = "text/css"; 
link.rel = "stylesheet"; 
link.rev = "stylesheet"; 
link.media = "screen"; 
link.href = url; 
} 
head.appendChild(link); 
} 
//輔助方法2:動(dòng)態(tài)添加js,css文件內(nèi)容 
function addTxt(text, fileType) { 
var head = document.getElementsByTagName('HEAD').item(0); 
var link; 
if (fileType == "js") { 
link = document.createElement("script"); 
link.type = "text/javascript"; 
link.innerHTML = text; 
} else { 
link = document.createElement("style"); 
link.type = "text/css"; 
link.innerHTML = text; 
} 
head.appendChild(link); 
} 
</script>

查看寫入記錄:

封裝成JS插件:

/** 
* 插件功能:使用localStorage緩存js和css文件,減少http請求和頁面渲染時(shí)間,適用于Web移動(dòng)端H5頁面制作。 
* 插件作者:zhangqs008@163.com 
* 使用方法: 
* 1.使用此插件前,需要給插件的pageVersion變量賦值,建議變量值由服務(wù)器后端輸出,當(dāng)需要更新客戶端資源時(shí),修改版本值即可。 
* 2.加載Js:由于js加載有順序要求,所以需要將后加載的腳本作為前一個(gè)腳本的回調(diào)參數(shù)傳入,如: 
* whir.res.loadJs("jquery", "<%= BasePath %>Turntable/Script/jquery-1.8.3.min.js", 
* function () { 
* whir.res.loadJs("turntable", "Script/whir.turntable.js", null); 
* }); 
* 3.加載css,如:whir.res.loadCss("css", "/Style/css_whir.css", null); 
*/ 
var whir = window.whir || {}; 
whir.res = { 
pageVersion: "", //頁面版本,由頁面輸出,用于刷新localStorage緩存 
//動(dòng)態(tài)加載js文件并緩存 
loadJs: function (name, url, callback) { 
if (window.localStorage) { 
var xhr; 
var js = localStorage.getItem(name); 
if (js == null || js.length == 0 || this.pageVersion != localStorage.getItem("version")) { 
if (window.ActiveXObject) { 
xhr = new ActiveXObject("Microsoft.XMLHTTP"); 
} else if (window.XMLHttpRequest) { 
xhr = new XMLHttpRequest(); 
} 
if (xhr != null) { 
xhr.open("GET", url); 
xhr.send(null); 
xhr.onreadystatechange = function () { 
if (xhr.readyState == 4 && xhr.status == 200) { 
js = xhr.responseText; 
localStorage.setItem(name, js); 
localStorage.setItem("version", whir.res.pageVersion); 
js = js == null ? "" : js; 
whir.res.writeJs(js); 
if (callback != null) { 
callback(); //回調(diào),執(zhí)行下一個(gè)引用 
} 
} 
}; 
} 
} else { 
whir.res.writeJs(js); 
if (callback != null) { 
callback(); //回調(diào),執(zhí)行下一個(gè)引用 
} 
} 
} else { 
whir.res.linkJs(url); 
} 
}, 
loadCss: function (name, url) { 
if (window.localStorage) { 
var xhr; 
var css = localStorage.getItem(name); 
if (css == null || css.length == 0 || this.pageVersion != localStorage.getItem("version")) { 
if (window.ActiveXObject) { 
xhr = new ActiveXObject("Microsoft.XMLHTTP"); 
} else if (window.XMLHttpRequest) { 
xhr = new XMLHttpRequest(); 
} 
if (xhr != null) { 
xhr.open("GET", url); 
xhr.send(null); 
xhr.onreadystatechange = function () { 
if (xhr.readyState == 4 && xhr.status == 200) { 
css = xhr.responseText; 
localStorage.setItem(name, css); 
localStorage.setItem("version", whir.res.pageVersion); 
css = css == null ? "" : css; 
css = css.replace(/images\//g, "style/images/"); //css里的圖片路徑需單獨(dú)處理 
whir.res.writeCss(css); 
} 
}; 
} 
} else { 
css = css.replace(/images\//g, "style/images/"); //css里的圖片路徑需單獨(dú)處理 
whir.res.writeCss(css); 
} 
} else { 
whir.res.linkCss(url); 
} 
}, 
//往頁面寫入js腳本 
writeJs: function (text) { 
var head = document.getElementsByTagName('HEAD').item(0); 
var link = document.createElement("script"); 
link.type = "text/javascript"; 
link.innerHTML = text; 
head.appendChild(link); 
}, 
//往頁面寫入css樣式 
writeCss: function (text) { 
var head = document.getElementsByTagName('HEAD').item(0); 
var link = document.createElement("style"); 
link.type = "text/css"; 
link.innerHTML = text; 
head.appendChild(link); 
}, 
//往頁面引入js腳本 
linkJs: function (url) { 
var head = document.getElementsByTagName('HEAD').item(0); 
var link = document.createElement("script"); 
link.type = "text/javascript"; 
link.src = url; 
head.appendChild(link); 
}, 
//往頁面引入css樣式 
linkCss: function (url) { 
var head = document.getElementsByTagName('HEAD').item(0); 
var link = document.createElement("link"); 
link.type = "text/css"; 
link.rel = "stylesheet"; 
link.rev = "stylesheet"; 
link.media = "screen"; 
link.href = url; 
head.appendChild(link); 
} 
}

調(diào)用該插件:

<script type="text/javascript"> 
//入口函數(shù) 
whir.res.pageVersion = "1002"; //頁面版本,用于檢測是否需要更新緩存 
whir.res.loadJs("jquery", "/gfdzp201508257998/Turntable/Script/jquery-1.8.3.min.js", 
function () { 
whir.res.loadJs("turntable", "/gfdzp201508257998/Turntable/Script/whir.turntable.js", null); 
}); 
whir.res.loadCss("css", "/gfdzp201508257998/Turntable/Style/css_whir.css", null); 
</script>

以上所述是小編給大家介紹的移動(dòng)端使用localStorage緩存Js和css文的方法(web開發(fā)),希望對(duì)大家有所幫助,如果大家有任何疑問請給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 微信小程序?qū)崿F(xiàn)底部彈出框

    微信小程序?qū)崿F(xiàn)底部彈出框

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)底部彈出框,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • 微信小程序自定義組件實(shí)現(xiàn)多選功能

    微信小程序自定義組件實(shí)現(xiàn)多選功能

    這篇文章主要為大家詳細(xì)介紹了微信小程序自定義組件實(shí)現(xiàn)多選功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • JS數(shù)組進(jìn)階示例【數(shù)組的幾種函數(shù)用法】

    JS數(shù)組進(jìn)階示例【數(shù)組的幾種函數(shù)用法】

    這篇文章主要介紹了JS數(shù)組進(jìn)階,結(jié)合實(shí)例形式總結(jié)分析了數(shù)組的幾種常見函數(shù)基本用法,涉及JavaScript數(shù)組元素刪除、拼接、添加、倒序排列等相關(guān)操作技巧,需要的朋友可以參考下
    2020-01-01
  • Save a File Using a File Save Dialog Box

    Save a File Using a File Save Dialog Box

    Save a File Using a File Save Dialog Box...
    2007-06-06
  • 基于ts的動(dòng)態(tài)接口數(shù)據(jù)配置的詳解

    基于ts的動(dòng)態(tài)接口數(shù)據(jù)配置的詳解

    這篇文章主要介紹了基于ts的動(dòng)態(tài)接口數(shù)據(jù)配置的詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • js簡單的分頁器插件代碼實(shí)例

    js簡單的分頁器插件代碼實(shí)例

    這篇文章主要介紹了js簡單的分頁器插件代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • uniapp中vuex的應(yīng)用使用步驟

    uniapp中vuex的應(yīng)用使用步驟

    Vuex是一個(gè)專為Vue.js應(yīng)用程序開發(fā)的狀態(tài)管理模式,它采用集中式存儲(chǔ)管理應(yīng)用的所有組件的狀態(tài),并以相應(yīng)的規(guī)則保證狀態(tài)以一種可預(yù)測的方式發(fā)生變化,下面這篇文章主要給大家介紹了關(guān)于uniapp中vuex的應(yīng)用使用,需要的朋友可以參考下
    2022-08-08
  • javascript將16進(jìn)制的字符串轉(zhuǎn)換為10進(jìn)制整數(shù)hex

    javascript將16進(jìn)制的字符串轉(zhuǎn)換為10進(jìn)制整數(shù)hex

    這篇文章主要介紹了javascript將16進(jìn)制的字符串轉(zhuǎn)換為10進(jìn)制整數(shù)hex,需要的朋友可以參考下
    2020-03-03
  • JavaScript isArray()函數(shù)判斷對(duì)象類型的種種方法

    JavaScript isArray()函數(shù)判斷對(duì)象類型的種種方法

    我們知道,JavaScript中檢測對(duì)象類型的運(yùn)算符有:typeof、instanceof,還有對(duì)象的constructor屬性
    2010-10-10
  • JavaScript DOM節(jié)點(diǎn)操作方式全面講解

    JavaScript DOM節(jié)點(diǎn)操作方式全面講解

    DOM(Document Object Model 文檔對(duì)象模型)定義了訪問和操作文檔的標(biāo)準(zhǔn)方法。整個(gè)瀏覽器網(wǎng)頁就是一個(gè)Dom樹形結(jié)構(gòu),這篇文章主要介紹了JavaScript DOM節(jié)點(diǎn)操作方式
    2022-10-10

最新評(píng)論

得荣县| 永清县| 平湖市| 翼城县| 天长市| 元氏县| 铅山县| 金川县| 常熟市| 平顶山市| 麦盖提县| 新郑市| 古蔺县| 南康市| 湖州市| 科技| 怀宁县| 宝丰县| 鹤岗市| 彰武县| 屏边| 库伦旗| 上思县| 舒城县| 中牟县| 平安县| 肇东市| 嘉定区| 钟祥市| 贵港市| 南郑县| 肃宁县| 崇义县| 铅山县| 济南市| 龙门县| 高清| 泽州县| 手游| 昭觉县| 云龙县|