如何實(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ú)立的方法,分別用來加載CSS 文件和JS 文件,參數(shù)均為欲加載的文件路徑。原理非常的簡(jiǎn)單:對(duì)于不同的加載文件類型創(chuàng)建不同的節(jié)點(diǎn),然后添加各自的屬性,最后扔到head 標(biāo)簽里面。經(jīng)測(cè)試,本方法兼容各瀏覽器,安全、無毒、環(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ā)過程中經(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屬性來指定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)文章
每天一篇javascript學(xué)習(xí)小結(jié)(Function對(duì)象)
這篇文章主要介紹了javascript中的Function對(duì)象知識(shí)點(diǎn),對(duì)Function對(duì)象的基本使用方法,以及各種方法進(jìn)行整理,感興趣的小伙伴們可以參考一下2015-11-11
JavaScript原生編寫《飛機(jī)大戰(zhàn)坦克》游戲完整實(shí)例
飛機(jī)大戰(zhàn)坦克是一款小游戲,相信很多朋友都有玩過,由于最近在深入學(xué)習(xí)Javascript,所以想著用利用Javascript來實(shí)現(xiàn)這個(gè)游戲,下面這篇文章主要介紹了如何利用JavaScript原生編寫《飛機(jī)大戰(zhàn)坦克》游戲,需要的朋友可以參考下2017-01-01
javascript 樹形導(dǎo)航菜單實(shí)例代碼
本文章來給大家提供一款適用于網(wǎng)站后臺(tái)的使用的javascript 樹形導(dǎo)航菜單特效代碼,有需要了解的同學(xué)可以參考一下2013-08-08
promise結(jié)合requestAnimationFrame用法示例
這篇文章主要為大家介紹了promise結(jié)合requestAnimationFrame用法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
概述javascript在Google IE中的調(diào)試技巧
本篇文章主要是對(duì)javascript在Google IE中的調(diào)試技巧進(jìn)行了介紹,需要的朋友可以過來參考下2016-11-11
詳解解決小程序中webview頁(yè)面多層history返回問題
這篇文章主要介紹了詳解解決小程序中webview頁(yè)面多層history返回問題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
Javascrip實(shí)現(xiàn)文字跳動(dòng)特效
這篇文章主要介紹了Javascrip實(shí)現(xiàn)文字跳動(dòng)特效的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-11-11
Javascript實(shí)現(xiàn)從小到大的數(shù)組轉(zhuǎn)換成二叉搜索樹
這篇文章主要介紹了Javascript實(shí)現(xiàn)從小到大的數(shù)組轉(zhuǎn)換成二叉搜索樹的相關(guān)資料,需要的朋友可以參考下2017-06-06
js中實(shí)現(xiàn)字符串和數(shù)組的相互轉(zhuǎn)化詳解
這篇文章主要介紹了js中實(shí)現(xiàn)字符串和數(shù)組的相互轉(zhuǎn)化,感興趣的小伙伴們可以參考一下2016-01-01

