如何實現(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 標(biāo)簽里面。經(jīng)測試,本方法兼容各瀏覽器,安全、無毒、環(huán)保,是 web 開發(fā)人員工作常備代碼。
下面是調(diào)用代碼,異常簡單:
//動態(tài)加載 CSS 文件
dynamicLoading.css("test.css");
//動態(tài)加載 JS 文件
dynamicLoading.js("test.js");
動態(tài)加載js和css
開發(fā)過程中經(jīng)常需要動態(tài)加載js和css,今天特意總結(jié)了一下常用的方法。
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文件,希望對大家的學(xué)習(xí)有所幫助。
- 動態(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文件多種解決辦法總結(jié)
- 使用javaScript動態(tài)加載Js文件和Css文件
- 理解javascript中的回調(diào)函數(shù)(callback)
- js 異步操作回調(diào)函數(shù)如何控制執(zhí)行順序
- javascript 自定義回調(diào)函數(shù)示例代碼
- 原生JS實現(xiàn)動態(tài)加載js文件并在加載成功后執(zhí)行回調(diào)函數(shù)的方法
相關(guān)文章
Bootstrap導(dǎo)航菜單點擊后無法自動添加active的處理方法
今天小編就為大家分享一篇Bootstrap導(dǎo)航菜單點擊后無法自動添加active的處理方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08
javascript常見數(shù)字進制轉(zhuǎn)換實例分析
這篇文章主要介紹了javascript常見數(shù)字進制轉(zhuǎn)換,結(jié)合實例形式分析了JavaScript十進制,十六進制及二進制的相互轉(zhuǎn)換原理與技巧,需要的朋友可以參考下2016-04-04
js實現(xiàn)固定顯示區(qū)域內(nèi)自動縮放圖片的方法
這篇文章主要介紹了js實現(xiàn)固定顯示區(qū)域內(nèi)自動縮放圖片的方法,實例分析了javascript操作頁面元素及屬性的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-07-07
ES6使用新特性Proxy實現(xiàn)的數(shù)據(jù)綁定功能實例
這篇文章主要介紹了ES6使用新特性Proxy實現(xiàn)的數(shù)據(jù)綁定功能,結(jié)合具體實例形式分析了ES6使用Proxy實現(xiàn)數(shù)據(jù)綁定具體原理、操作步驟與相關(guān)注意事項,需要的朋友可以參考下2020-05-05
原生JS+CSS實現(xiàn)炫酷重力模擬彈跳系統(tǒng)的登錄頁面
今天小編給大家分享基于原生JS實現(xiàn)一個炫酷的登錄頁面,實現(xiàn)效果有點像重力模擬彈跳系統(tǒng),效果非常棒,需要的朋友參考下實現(xiàn)代碼吧2017-11-11

