本文简单介绍动态加载、移除、替换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")[].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>=;i--){

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

  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>=;i--){

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

  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
版权声明:本文为博主原创文章,转载请附上博文链接!

动态加载、移除js、css的更多相关文章

  1. 动态加载 移除js file

    动态加载.移除.替换js/css文件 stylesheetjavascriptcssfunctionnull <script language="javascript"> ...

  2. JavaScript动态加载资源【js|css】示例代码

    在开发过程中会用到各种第三方的插件,或者自己写在单独文件中的js方法库或者css样式,在html头部总是需要写一大堆的script和link标签,如果想要自己实现动态的引入资源文件,可以使用开源的re ...

  3. 转:Android Webview 加载外部html时选择加载本地的js,css等资源文件

    原文地址:http://m.blog.csdn.net/blog/qduningning/43196819 在使用WebView加载网页的时候,有一些固定的资源文件如js的jquery包,css,图片 ...

  4. Thymeleaf模板引擎绕过浏览器缓存加载静态资源js,css文件

    浏览器会缓存相同文件名的css样式表或者javascript文件.这给我们调试带来了障碍,好多时候修改的代码不能在浏览器正确显示. 静态常见的加载代码如下: <link rel="st ...

  5. 配置动态加载模块和js分模块打包,生产环境和开发环境公共常量配置

    1. 话不多少 先上代码:  route.js  // 引用模板 分模块编译 const main = r => require.ensure([], () => r(require('. ...

  6. 网站更换服务器出现加载不了js css文件的问题

    原因是 里面加找不到.woff类型,后面把上面注释掉就可以了

  7. jQuery动态加载动画spin.js

    在线演示 本地下载

  8. 动态加载、移除、替换JS和CSS

    //动态加载一个js/css文件 function loadjscssfile(filename, filetype) { if (filetype == "js") { var ...

  9. 用JavaScript动态加载CSS和JS文件

    本文转载自:http://www.cnblogs.com/xiaochaohuashengmi/archive/2011/11/14/2248451.html 今天项目中需要用到动态加载 CSS 文件 ...

随机推荐

  1. GoStudy——解决vscode中golang插件依赖安装失败问题

    vscode中安装ms-vscode.go插件后可以开启对go语言的支持,ms-vscode.go插件需要依赖一些工具,安装完成后提示 Installing github.com/nsf/gocode ...

  2. IIS 负载均衡

    在大型Web应用系统中,由于请求的数据量过大以及并发的因素,导致Web系统会出现宕机的现象,解决这一类问题的方法我个人觉得主要在以下几个方面: 1.IIS 负载均衡. 2.数据库 负载均衡. 3.系统 ...

  3. Excel技巧--巧用差异化插入空行

    假设有上面这一列,要求在不同城市之间插入一空行相隔开.数据少的时候可以手动操作,但数据量大时,就需要以下技巧: 1.复制该列(除去标题),并粘贴到右侧一列,但上方要隔开一个单元格B2: 2.将这两列选 ...

  4. <realsense D400>同步采集深度图和彩色图

    利用深度相机采集深度图和彩色图会面临一个问题,如何实现同步采集数据? 以下是我搜集到的两点方法: 1)高翔博士提到他的orbslam2教程有这么一步工作,具体目录为 example/RGBD/. (等 ...

  5. Java的Finalizer引发的内存溢出

    本文介绍的是Java里一个内建的概念,Finalizer.你可能对它对数家珍,但也可能从未听闻过,这得看你有没有花时间完整地看过一遍java.lang.Object类了.在java.lang.Obje ...

  6. MySQL 之 MHA + ProxySQL + keepalived 实现读写分离,高可用(二)

    ProxySQL安装 yum/rpm安装 在github或官网上可以下载rpm包,wiki的Getting start章节有详细介绍. cat <<EOF | tee /etc/yum.r ...

  7. 通过spark sql 将 hdfs上文件导入到mongodb

    功能:通过spark sql 将hdfs 中文件导入到mongdo 所需jar包有:mongo-spark-connector_2.11-2.1.2.jar.mongo-java-driver-3.8 ...

  8. Java IO浅析

    1.File类 /** * * @author lenovo * * File类 * pathSeparator * separator * * File() * boolean createNewF ...

  9. 用GDB调试程序(六)

    七.设置显示选项 GDB中关于显示的选项比较多,这里我只例举大多数常用的选项. set print address     set print address on         打开地址输出,当程 ...

  10. 9-安装redis

    1.在linux上安装C语言环境 yum install gcc-c++ 2.解压源码包 tar -xvf /opt/soft/redis-3.0.0.tar -C /opt/app/ 3.编译源码( ...