Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript数组延迟js加载joomla_Javascript_Jquery_Joomla_Mootools - Fatal编程技术网

Javascript数组延迟js加载joomla

Javascript数组延迟js加载joomla,javascript,jquery,joomla,mootools,Javascript,Jquery,Joomla,Mootools,我推迟了Joomla模板中一些js文件的加载。这个很好用 <script type="text/javascript"> function downloadJSAtOnload() { var element = document.createElement("script"); element.src = "/pathto.js"; document.body.appendChild(e

我推迟了Joomla模板中一些js文件的加载。这个很好用

    <script type="text/javascript">
        function downloadJSAtOnload() {
            var element = document.createElement("script");
            element.src = "/pathto.js";
            document.body.appendChild(element);
        }
        if (window.addEventListener)
            window.addEventListener("load", downloadJSAtOnload, false);
        else if (window.attachEvent)
            window.attachEvent("onload", downloadJSAtOnload);
        else window.onload = downloadJSAtOnload;
    </script>

函数downloadJSAtOnload(){
var元素=document.createElement(“脚本”);
element.src=“/pathto.js”;
document.body.appendChild(元素);
}
if(window.addEventListener)
addEventListener(“加载”,downloadJSAtOnload,false);
else if(窗口附件)
window.attachEvent(“onload”,downloadJSAtOnload);
else window.onload=下载jsatonload;
然而,我有十几个js文件要像这样加载,对于每个文件,我必须使用与上面相同的代码块,只是pathto.js不同

我的Javascript能力非常糟糕。是否可以将所有js文件放入一个数组中,然后使用相同的代码块逐个遍历它们,而不必反复重复相同的代码块

我想要的是

    <script type="text/javascript">
        function downloadJSAtOnload() {
            var element = document.createElement("script");
            element.src = AN ARRAY OF JS FILES;
            document.body.appendChild(element);
        }
        FOR EACH ITEM IN THE ARRAY
            if (window.addEventListener)
                window.addEventListener("load", downloadJSAtOnload, false);
            else if (window.attachEvent)
                window.attachEvent("onload", downloadJSAtOnload);
            else window.onload = downloadJSAtOnload;
    </script>

函数downloadJSAtOnload(){
var元素=document.createElement(“脚本”);
element.src=JS文件的数组;
document.body.appendChild(元素);
}
对于数组中的每个项
if(window.addEventListener)
addEventListener(“加载”,downloadJSAtOnload,false);
else if(窗口附件)
window.attachEvent(“onload”,downloadJSAtOnload);
else window.onload=下载jsatonload;

谢谢你的帮助

实际上,循环应该在函数中

下面是函数应该是什么(我还没有测试它):

函数下载jsatonload(){
var scripts=[“script1.js”、“script2.js”、“script3.js”];
对于(i=0;i
您应该更多地使用mootools中的Assets.js,您可以让它与多个加载程序一起工作,或者更好地使用真实的加载程序,如requireJS:)来更新。-请记住,这是顺序加载,如果1个dep失败,链将失败,
onComplete
将不会调用。谢谢Dimitar-最后一个似乎有效。有可能让它们异步加载而不是顺序加载吗?当然,如果你不关心它们的顺序。。。您甚至可以将调用包装成承诺或其他任何形式——否则,替换为普通的。每个循环并在len完成时触发一个onComplete,而不检查是否剩余。理想情况下,它们应该是可配置的,您可能希望加载a>b>c,d,这是我需要的东西,但不幸的是,这不起作用。
function downloadJSAtOnload() {
    var scripts = ["script1.js", "script2.js", "script3.js"];
    for (i = 0; i < scripts.length; i++) {
        var element = document.createElement("script");
        element.src = scripts[i];
        document.body.appendChild(element);
   }
}