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

  • 相关阅读:
    H5 video播放视频遇到的问题
    IIS域名转发
    IIS Tomcat共享80端口
    C# 操作注册表WindowsRegistry
    Owin Middleware如何在IIS集成管道中执行
    如何定义一个有效的OWIN Startup Class
    mysql 数据库的备份与还原 at winows
    windows查看端口占用
    asp.net 二级域名表单认证情况下共享Cookie
    c# 多线程使用队列顺序写日志的类 (需要再优化)
  • 原文地址:https://www.cnblogs.com/4job/p/10057429.html
Copyright © 2020-2023  润新知