如何动态加载外部CSS与JS文件

如何动态加载外部CSS与JS文件,第1张

动态加载外部css样式及css样式,参考代码如下:

// 动态加载外部改败梁js文件 

var flag = true 

if( flag ){ 

loadScript( "js/index.js" ) 

function loadScript( url ){ 

var script = document.createElement( "script" ) 

script.type = "type/javascipt" 

script.src = url 

document.getElementsByTagName( "枯慧head" )[0].appendChild( script ) 

// 动态加载js 

if( flag ){ 

var script = document.createElement( "script" ) 

script.type = "text/javascript"核运 

script.text = " " 

document.getElementsByTagName( "head" )[0].appendChild( script ) 

// 动态加载外部css样式 

if( flag ){ 

loadCss( "css/base.css" ) 

function loadCss( url ){ 

var link = document.createElement( "link" ) 

link.type = "text/css" 

link.rel = "stylesheet" 

link.href = url 

document.getElementsByTagName( "head" )[0].appendChild( link ) 

// 动态加载css样式 

if( flag ){ 

var style = document.createElement( "style" ) 

style.type = "text/css" 

document.getElementsByTagName( "head" )[0].appendChild( style ) 

var sheet = document.styleSheets[0] 

insertRules( sheet,"#gaga1","background:#f00",0 ) 

function insertRules( sheet,selectorTxt,cssTxt,position ){ 

if( sheet.insertRule ){ // 判断非IE浏览器 

sheet.insertRule( selectorTxt + "{" + cssTxt +"}" ,position ) 

}else if( sheet.addRule ){ //判断是否是IE浏览器 

sheet.addRule( selectorTxt ,cssTxt ,position ) 

}

项目中需要用到动态加载CSS 文件,整理了一下,顺便融合了动态加载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 文件,参数均为欲加载的文件路径悉枝。原理非常的简单:对于不同的加载文件类型创建不同的节点,然后添加各自的属性,最后扔到head 标签里面。经测试,本方法兼容各浏览器,安全、无毒、环保,是 web 开发人员工作常备代码。

下面是调用代码,异常御键简单:

//动态加载 CSS 文件

dynamicLoading.css("test.css")

//动态加载 JS 文件

dynamicLoading.js("test.js")

jquery动态加载css,js文件方法

方法1:

代码如下

复制代码代码如下:

$.getscript("test.js")

方法2:

代码如下

复制代码代码如下:

function loadjs(file){

var head = $('head').remove('#loadscript')

$("<scri"+"pt>"+"</scr"+"ipt>").attr({src:file,type:'text/javascript',id:'load'}).appendto(head)

}

方法3:

代码如下

复制代码代码如下:

$("<scri"+"pt>"+"</scr"+"ipt>碧段").attr({src:file,type:'text/javascript',id:'load'}).appendto($('head').remove('#loadscript'))

下面附一些js动态加载js,css文件的方法。

以下代码是摘自news.qq.com页面里的代码的行皮,本人未进行测试,程序看着应该没有问题的,可以做为参考的,主要用来在网页底部位置,实现动态加档慧差载js文件到网页<head>标签的后面,通过DOM来实现的,代码如下:

代码如下

复制代码代码如下:

<script>

var SCRIPT_TIMEOUT = 20000

var QVPL_PATH = "/QVPL1.0.0.js"

function loadHelper (jsurl) {

var oScriptEl, oTimeoutHDL, oHead

oScriptEl = document.createElement("script")

oScriptEl.type = "text/javascript"

oScriptEl.language = "javascript"

oScriptEl.src = jsurl

oScriptEl.onreadystatechange = doCallback

oScriptEl.onload = function()

{

this.readyState = "complete"

doCallback()

if(typeof(lianbo) == "object"){

lianbo.init(window.QVPL)

}

}

oTimeoutHDL = window.setTimeout(doError,SCRIPT_TIMEOUT)

document.getElementsByTagName("head")[0].appendChild(oScriptEl)

function doCallback()

{

if (oScriptEl.readyState == "complete" || oScriptEl.readyState == "loaded")

{

oScriptEl.onload = oScriptEl.onreadystatechange = new Function()

window.clearTimeout(oTimeoutHDL)

}

}

function doError()

{

oScriptEl.parentNode.removeChild(oScriptEl)

}

}

loadHelper(QVPL_PATH)

</script>


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12447743.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-23
下一篇2023-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存