如何實現(xiàn)JavaScript動態(tài)加載CSS和JS文件
項目中需要用到動態(tài)加載CSS 文件,整理了一下,順便融合了動態(tài)加載JS 的功能寫成了一個對象,先上代碼:
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); } }
對象包含兩個完全獨立的方法,分別用來加載CSS 文件和JS 文件,參數(shù)均為欲加載的文件路徑。原理非常的簡單:對于不同的加載文件類型創(chuàng)建不同的節(jié)點,然后添加各自的屬性,最后扔到head 標簽里面。經測試,本方法兼容各瀏覽器,安全、無毒、環(huán)保,是 web 開發(fā)人員工作常備代碼。
下面是調用代碼,異常簡單:
//動態(tài)加載 CSS 文件 dynamicLoading.css("test.css"); //動態(tài)加載 JS 文件 dynamicLoading.js("test.js");
動態(tài)加載js和css
開發(fā)過程中經常需要動態(tài)加載js和css,今天特意總結了一下常用的方法。
1、動態(tài)加載js
方法一:動態(tài)加載js文件
// 動態(tài)加載js腳本文件 function loadScript(url) { var script = document.createElement("script"); script.type = "text/javascript"; script.src = url; document.body.appendChild(script); } // 測試 loadScript("javascript/lib/cookie.js");
方法二:動態(tài)加載js腳本
// 動態(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屬性來指定javascript代碼。 script.text = code; } document.body.appendChild(script); } // 測試 var text = "function test(){alert('test');}"; loadScriptString(text); test();
2、動態(tài)加載css
方法一:動態(tài)加載css文件
// 動態(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); } // 測試 loadStyles("css/secondindex.css");
方法二:動態(tài)加載css腳本
// 動態(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); } // 測試 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);
以上就是告訴大家如何實現(xiàn)JavaScript動態(tài)加載CSS和JS文件,希望對大家的學習有所幫助。
- 動態(tài)加載JS文件的三種方法
- jquery及js實現(xiàn)動態(tài)加載js文件的方法
- 用ajax動態(tài)加載需要的js文件
- JS 動態(tài)加載js文件和css文件 同步/異步的兩種簡單方式
- JS加載器如何動態(tài)加載外部js文件
- javascript中動態(tài)加載js文件多種解決辦法總結
- 使用javaScript動態(tài)加載Js文件和Css文件
- 理解javascript中的回調函數(shù)(callback)
- js 異步操作回調函數(shù)如何控制執(zhí)行順序
- javascript 自定義回調函數(shù)示例代碼
- 原生JS實現(xiàn)動態(tài)加載js文件并在加載成功后執(zhí)行回調函數(shù)的方法
相關文章
Bootstrap導航菜單點擊后無法自動添加active的處理方法
今天小編就為大家分享一篇Bootstrap導航菜單點擊后無法自動添加active的處理方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08js實現(xiàn)固定顯示區(qū)域內自動縮放圖片的方法
這篇文章主要介紹了js實現(xiàn)固定顯示區(qū)域內自動縮放圖片的方法,實例分析了javascript操作頁面元素及屬性的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-07-07ES6使用新特性Proxy實現(xiàn)的數(shù)據綁定功能實例
這篇文章主要介紹了ES6使用新特性Proxy實現(xiàn)的數(shù)據綁定功能,結合具體實例形式分析了ES6使用Proxy實現(xiàn)數(shù)據綁定具體原理、操作步驟與相關注意事項,需要的朋友可以參考下2020-05-05原生JS+CSS實現(xiàn)炫酷重力模擬彈跳系統(tǒng)的登錄頁面
今天小編給大家分享基于原生JS實現(xiàn)一個炫酷的登錄頁面,實現(xiàn)效果有點像重力模擬彈跳系統(tǒng),效果非常棒,需要的朋友參考下實現(xiàn)代碼吧2017-11-11