Firefox不执行通过另一个外部脚本动态加载的脚本

时间:2016-06-05 12:39:52

标签: javascript firefox

我一直遇到Firefox没有执行通过外部脚本动态加载的JavaScript文件的问题。

让我解释一下。

我有以下HTML文件:

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <title>Restive.JS</title>
    <meta name="keywords" content="">
    <meta name="description" content="">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <script type="text/javascript" src="assets/js/load.js"></script>
</head>
<body>
    <h1>Loading JavaScript</h1>
</body>
</html>

在我的 load.js 文件中,我有以下代码:

document.addEventListener("DOMContentLoaded", function() {
    function loadScript(url) {
        var script = document.createElement("script");
        script.src = url;
        document.getElementsByTagName("head")[0].appendChild(script);
    }

    var list_arr = ['assets/js/test1.js', 'assets/js/test2.js'];
    for (var i = 0; i < list_arr.length; i++) {
        loadScript(list_arr[i]);
    }
});

test1.js test2.js 中,我有console.log('test1.js is loaded!');console.log('test2.js is loaded!');

问题是加载了 test1.js test2.js (我可以通过检查查看<head>中的两个文件),但它们是从未执行过(因为控制台日志中没有消息)。

然而,当我通过内联JavaScript更改原始HTML中的脚本引用格式时,即从中改变:

<script type="text/javascript" src="assets/js/load.js"></script>

到此:

<script>
document.addEventListener("DOMContentLoaded", function() {
    function loadScript(url) {
        var script = document.createElement("script");
        script.src = url;
        document.getElementsByTagName("head")[0].appendChild(script);
    }

    var list_arr = ['assets/js/test3.js', 'assets/js/test4.js'];
    for (var i = 0; i < list_arr.length; i++) {
        console.log('i = ' + i);
        loadScript(list_arr[i]);
    }
});
</script>

然后加载并执行脚本。

我在Chrome或Safari中看不到这种行为,只有Firefox。此外,内联不是一种选择,因为此功能是内置于用户必须通过外部链接引用的库。

这是一个可修复的问题吗?

修改

我使用Firefox 46.0.1在Mac OSX 10.10.5上

0 个答案:

没有答案