如何在js文件中动态加载另一个js文件?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在js文件中动态加载另一个js文件?相关的知识,希望对你有一定的参考价值。

如何在js文件中动态加载另一个js文件?

有三种方法可以实现,分别如下:
第一种、直接document.write:
<script language="javascript">
document.write("<script src=\'test.js\'><\\/script>");
</script>

第二种、动态改变已有script的src属性
<script src=\'\' id="s1"></script>
<script language="javascript">
s1.src="test.js"
</script>

第三种、动态创建script元素:
<script>
var oHead = document.getElementsByTagName(\'HEAD\').item(0);
var oScript= document.createElement("script");
oScript.type = "text/javascript";
oScript.src="test.js";
oHead.appendChild( oScript);
</script>

注意:第三种方法使用时,请注意路径。
参考技术A 1、直接document.write
<script language="javascript">
document.write("<script src='test.js'><\/script>");
</script>

2、动态改变已有script的src属性
<script src='' id="s1"></script>
<script language="javascript">
s1.src="test.js"
</script>

3、动态创建script元素
<script>
var oHead = document.getElementsByTagName('HEAD').item(0);
var oScript= document.createElement("script");
oScript.type = "text/javascript";
oScript.src="test.js";
oHead.appendChild( oScript);
</script>
其实原理就是利用dom动态的引入一个js到文件中来~就能和原有的js通信了~本回答被提问者和网友采纳
参考技术B 可以把多个js文件加载到页面就行,何必再在js加载?
<script src="1.js" type="text/javascript"></script>
<script src="2.js" type="text/javascript"></script>
<script src="3.js" type="text/javascript"></script>追问

这个是我的需求啊。我做多个机顶盒浏览器的适配。。。

参考技术C <script>
function loadJs(name)
document.write('<script src="'+name+'" type="text/javascript"></script>');

</script>

好像这样就可以了 ~

js判断异步引入的js文件是否加载完毕

  在正常的加载过程中,js的加载都是同步的,也就是在加载过程中,浏览器会阻塞接下来的内容的加载。这时候我们就要用到动态加载,动态加载是异步的,如果我们在后边要用到这个动态加载的js文件里的东西,就要保证这个文件加载完成后,再执行下面的内容。

  如何判断js是否加载完成?(实现loadScript(url,callback)异步加载脚本,完成后执行回调函数,要求支持IE)

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>js判断异步引入的js文件是否加载完毕</title>
<meta name="description" content="">
<meta name="keywords" content="">
<link href="" rel="stylesheet">
</head>
<body>
<p onclick="loadScript(‘ocrad.js‘,null);">js如何判断异步引入的js文件是否加载完毕</p>
    
<script type="text/javascript">
    function loadScript(url,callback)
        //但是,这种加载方式在加载执行完之前会阻止 onload 事件的触发
        var _doc=document.getElementsByTagName(‘head‘)[0]; //获取head头部标签元素对象。
        var script=document.createElement(‘script‘);       //创建一个script标签元素。
    script.setAttribute(‘type‘,‘text/javascript‘);     //设置script标签的type属性。 script.type=‘text/javascript‘
    //script.async=‘async‘;
    script.setAttribute(‘src‘,url);                    //   script.src=url;
        script.setAttribute(‘async‘,‘true‘);
        _doc.appendChild(script);                          //将script标签附加到head标签中,否则只能够在IE11以下浏览器能够完成判断。
        script.onload=script.onreadystatechange=function()
            if(!this.readyState||this.readyState==‘loaded‘||this.readyState==‘complete‘)
                console.log(‘js onload‘);
            
            script.onload=script.onreadystatechange=null;     //删除事件处理函数。
        
    
    
    //解决了阻塞 onload 事件触发的问题 ,不是立即开始异步加载 js ,而是在 onload 时才开始异步加载。
    if (window.attachEvent)
         window.attachEvent(‘onload‘, function()loadScript(‘ocrad.js‘,null););
     else
         window.addEventListener(‘load‘, function()loadScript(‘ocrad.js‘,null);, false);</script>
</body>
</html>

相关链接:https://www.cnblogs.com/hq233/p/7102549.html

https://www.cnblogs.com/telnetzhang/p/5827791.html

以上是关于如何在js文件中动态加载另一个js文件?的主要内容,如果未能解决你的问题,请参考以下文章

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

如何动态加载js文件

用原生js怎么动态添加一个js文件

为了提高性能,如何动态加载JS文件

AngularJS- 使用 LazyLoad- Webpack 动态加载脚本文件

js如何实现获取视频加载