如何實(shí)現(xiàn)JavaScript動(dòng)態(tài)加載CSS和JS文件
項(xiàng)目中需要用到動(dòng)態(tài)加載CSS 文件,整理了一下,順便融合了動(dòng)態(tài)加載JS 的功能寫成了一個(gè)對(duì)象,先上代碼:
var dynamicLoading = { css: function(path){ if(!path || path.length === 0){ throw new Error('argument "path" is required !'); } var head = document.getElementsByTagName('head')[0]; var link = document.createElement('link'); link.href = path; link.rel = 'stylesheet'; link.type = 'text/css'; head.appendChild(link); }, js: function(path){ if(!path || path.length === 0){ throw new Error('argument "path" is required !'); } var head = document.getElementsByTagName('head')[0]; var script = document.createElement('script'); script.src = path; script.type = 'text/javascript'; head.appendChild(script); } }
對(duì)象包含兩個(gè)完全獨(dú)立的方法,分別用來(lái)加載CSS 文件和JS 文件,參數(shù)均為欲加載的文件路徑。原理非常的簡(jiǎn)單:對(duì)于不同的加載文件類型創(chuàng)建不同的節(jié)點(diǎn),然后添加各自的屬性,最后扔到head 標(biāo)簽里面。經(jīng)測(cè)試,本方法兼容各瀏覽器,安全、無(wú)毒、環(huán)保,是 web 開發(fā)人員工作常備代碼。
下面是調(diào)用代碼,異常簡(jiǎn)單:
//動(dòng)態(tài)加載 CSS 文件 dynamicLoading.css("test.css"); //動(dòng)態(tài)加載 JS 文件 dynamicLoading.js("test.js");
動(dòng)態(tài)加載js和css
開發(fā)過(guò)程中經(jīng)常需要?jiǎng)討B(tài)加載js和css,今天特意總結(jié)了一下常用的方法。
1、動(dòng)態(tài)加載js
方法一:動(dòng)態(tài)加載js文件
// 動(dòng)態(tài)加載js腳本文件 function loadScript(url) { var script = document.createElement("script"); script.type = "text/javascript"; script.src = url; document.body.appendChild(script); } // 測(cè)試 loadScript("javascript/lib/cookie.js");
方法二:動(dòng)態(tài)加載js腳本
// 動(dòng)態(tài)加載js腳本 function loadScriptString(code) { var script = document.createElement("script"); script.type = "text/javascript"; try{ // firefox、safari、chrome和Opera script.appendChild(document.createTextNode(code)); }catch(ex) { // IE早期的瀏覽器 ,需要使用script的text屬性來(lái)指定javascript代碼。 script.text = code; } document.body.appendChild(script); } // 測(cè)試 var text = "function test(){alert('test');}"; loadScriptString(text); test();
2、動(dòng)態(tài)加載css
方法一:動(dòng)態(tài)加載css文件
// 動(dòng)態(tài)加載css文件 function loadStyles(url) { var link = document.createElement("link"); link.type = "text/css"; link.rel = "stylesheet"; link.href = url; document.getElementsByTagName("head")[0].appendChild(link); } // 測(cè)試 loadStyles("css/secondindex.css");
方法二:動(dòng)態(tài)加載css腳本
// 動(dòng)態(tài)加載css腳本 function loadStyleString(cssText) { var style = document.createElement("style"); style.type = "text/css"; try{ // firefox、safari、chrome和Opera style.appendChild(document.createTextNode(cssText)); }catch(ex) { // IE早期的瀏覽器 ,需要使用style元素的stylesheet屬性的cssText屬性 style.styleSheet.cssText = cssText; } document.getElementsByTagName("head")[0].appendChild(style); } // 測(cè)試 var css = "body{color:blue;}"; loadStyleString(css);
比較直接的代碼
var head = document.getElementsByTagName('head')[0]; var link = document.createElement('link'); link.href = "/css/indexIE.css"; link.rel = 'stylesheet'; link.type = 'text/css'; head.appendChild(link);
以上就是告訴大家如何實(shí)現(xiàn)JavaScript動(dòng)態(tài)加載CSS和JS文件,希望對(duì)大家的學(xué)習(xí)有所幫助。
- 動(dòng)態(tài)加載JS文件的三種方法
- jquery及js實(shí)現(xiàn)動(dòng)態(tài)加載js文件的方法
- 用ajax動(dòng)態(tài)加載需要的js文件
- JS 動(dòng)態(tài)加載js文件和css文件 同步/異步的兩種簡(jiǎn)單方式
- JS加載器如何動(dòng)態(tài)加載外部js文件
- javascript中動(dòng)態(tài)加載js文件多種解決辦法總結(jié)
- 使用javaScript動(dòng)態(tài)加載Js文件和Css文件
- 理解javascript中的回調(diào)函數(shù)(callback)
- js 異步操作回調(diào)函數(shù)如何控制執(zhí)行順序
- javascript 自定義回調(diào)函數(shù)示例代碼
- 原生JS實(shí)現(xiàn)動(dòng)態(tài)加載js文件并在加載成功后執(zhí)行回調(diào)函數(shù)的方法
相關(guān)文章
Bootstrap導(dǎo)航菜單點(diǎn)擊后無(wú)法自動(dòng)添加active的處理方法
今天小編就為大家分享一篇Bootstrap導(dǎo)航菜單點(diǎn)擊后無(wú)法自動(dòng)添加active的處理方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-08-08javascript中數(shù)組和字符串的方法對(duì)比
下面小編就為大家?guī)?lái)一篇javascript中數(shù)組和字符串的方法對(duì)比。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-07-07javascript常見(jiàn)數(shù)字進(jìn)制轉(zhuǎn)換實(shí)例分析
這篇文章主要介紹了javascript常見(jiàn)數(shù)字進(jìn)制轉(zhuǎn)換,結(jié)合實(shí)例形式分析了JavaScript十進(jìn)制,十六進(jìn)制及二進(jìn)制的相互轉(zhuǎn)換原理與技巧,需要的朋友可以參考下2016-04-04js實(shí)現(xiàn)固定顯示區(qū)域內(nèi)自動(dòng)縮放圖片的方法
這篇文章主要介紹了js實(shí)現(xiàn)固定顯示區(qū)域內(nèi)自動(dòng)縮放圖片的方法,實(shí)例分析了javascript操作頁(yè)面元素及屬性的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07ES6使用新特性Proxy實(shí)現(xiàn)的數(shù)據(jù)綁定功能實(shí)例
這篇文章主要介紹了ES6使用新特性Proxy實(shí)現(xiàn)的數(shù)據(jù)綁定功能,結(jié)合具體實(shí)例形式分析了ES6使用Proxy實(shí)現(xiàn)數(shù)據(jù)綁定具體原理、操作步驟與相關(guān)注意事項(xiàng),需要的朋友可以參考下2020-05-05微信小程序?qū)崿F(xiàn)一個(gè)自定義遮罩層效果
這篇文章主要介紹了微信小程序?qū)崿F(xiàn)一個(gè)自定義遮罩層,大概效果是點(diǎn)擊按鈕Show顯示遮罩層,再次點(diǎn)擊屏幕任何地方隱藏遮罩層,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-09-09原生JS+CSS實(shí)現(xiàn)炫酷重力模擬彈跳系統(tǒng)的登錄頁(yè)面
今天小編給大家分享基于原生JS實(shí)現(xiàn)一個(gè)炫酷的登錄頁(yè)面,實(shí)現(xiàn)效果有點(diǎn)像重力模擬彈跳系統(tǒng),效果非常棒,需要的朋友參考下實(shí)現(xiàn)代碼吧2017-11-11一個(gè)簡(jiǎn)易時(shí)鐘效果js實(shí)現(xiàn)代碼
這篇文章主要為大家詳細(xì)介紹了一個(gè)簡(jiǎn)易時(shí)鐘效果js實(shí)現(xiàn)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10