1. 程式人生 > >動態載入、移除js、css

動態載入、移除js、css

本文簡單介紹動態載入、移除、替換js/css檔案 。有時候我們在寫前端的時候,會有出現需要動態載入一些東如css js 這樣能減輕使用者載入負擔,從而提高響應效率。下面貼出程式碼。
//JS寫法
 

<script language="JavaScript">

//動態載入一個js/css檔案

function loadjscssfile(filename, filetype){

if (filetype=="js"){

var fileref=document.createElement('script')

fileref.setAttribute("type","text/javascript
") fileref.setAttribute("src",filename) } else if (filetype=="css"){ var fileref=document.createElement("link") fileref.setAttribute("rel","stylesheet") fileref.setAttribute("type","text/css") fileref.setAttribute("href",filename) } if (typeof fileref!="undefined") document.getElementsByTagName(
"head")[0].appendChild(fileref) }

使用示例:

loadjscssfile("myscript.js","js")

loadjscssfile("javascript.PHP","js")

loadjscssfile("mystyle.css","css")
</script>

//jquery載入css
$('#btn').click(function()
{
  $('head').children(':last').attr({
    rel: "stylesheet",
    type: 'text/css',
    href: './style.css
',
  });
})
//jquery載入js

$.getScript("index.js");//直接載入 //當載入完成之後需要進行後續操作,可利用callback實現 $.getScript("test.js", function() { console.log('success') }); $.getScript()//也可利用done的方式判斷js檔案是否載入成功 $.getScript("test.js").done(function() { console.log('success') });

//動態移除

//移動已經載入過的js/css

function removejscssfile(filename,filetype){

var targetelement=(filetype=="js")? "script" :(filetype=="css")? "link" : "none"

var targetattr=(filetype=="js")?"src" : (filetype=="css")? "href" :"none"

var allsuspects=document.getElementsByTagName(targetelement)

for (var i=allsuspects.length; i>=0;i--){

if (allsuspects[i] &&allsuspects[i].getAttribute(targetattr)!=null && allsuspects[i].getAttribute(targetattr).indexOf(filename)!=-1)

  allsuspects[i].parentNode.removeChild(allsuspects[i])

}

}

</script>

使用示例:

removejscssfile("somescript.js","js")

removejscssfile("somestyle.css","css")
替換已經載入的js/css檔案,程式碼如下:

<script language="javascript">

function createjscssfile(filename,filetype){

if (filetype=="js"){

var fileref=document.createElement('script')

fileref.setAttribute("type","text/javascript")

fileref.setAttribute("src",filename)

}

else if (filetype=="css"){

var fileref=document.createElement("link")

fileref.setAttribute("rel","stylesheet")

fileref.setAttribute("type","text/css")

fileref.setAttribute("href",filename)

}

return fileref

} 

function replacejscssfile(oldfilename,newfilename, filetype){

var targetelement=(filetype=="js")?"script" : (filetype=="css")? "link" :"none"

var targetattr=(filetype=="js")?"src" : (filetype=="css")? "href" :"none"

var allsuspects=document.getElementsByTagName(targetelement)

for (var i=allsuspects.length; i>=0;i--){

if (allsuspects[i] &&allsuspects[i].getAttribute(targetattr)!=null &&allsuspects[i].getAttribute(targetattr).indexOf(oldfilename)!=-1){

  var newelement=createjscssfile(newfilename, filetype)

  allsuspects[i].parentNode.replaceChild(newelement, allsuspects[i])

}

}

}
</script>

---------------------
作者:CG-Jun
來源:CSDN
原文:https://blog.csdn.net/m0_37950366/article/details/70207389
版權宣告:本文為博主原創文章,轉載請附上博文連結!