动态更改的脚本源无法正常工作

时间:2016-02-04 04:51:48

标签: javascript jquery html requirejs

在html页面中,我正在更改配置文件的来源。源已更改但更改的源脚本文件未呈现。

路径更改后,不会加载require配置。

这是尝试过的。

HTML:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script id="reqScript" data-main="" src="require.js"></script>
    <script>
        var configPath = "";
        function setConfigPath(path){
            configPath = path;
            var getScriptID = document.getElementById('reqScript');
            getScriptID.setAttribute('data-main',configPath);
        }

        var hostname = window.location.host.toLowerCase();
        if(hostname.indexOf("domain1")!=-1){
            setConfigPath("domain1-config");
        }
        else{
            setConfigPath("domain2-config");
        }
    </script>

</head>
<body>
</body>
</html>

2 个答案:

答案 0 :(得分:2)

修改data-main标记的<script>属性不会使其重新加载脚本。要动态加载脚本,您需要创建一个新元素。

function setConfigPath(configPath){
    var getScriptID = document.createElement('script');
    getScriptID.setAttribute('data-main',configPath);
    getScriptID.src = 'require.js';
    document.getElementsByTagName('head')[0].appendChild(getScriptID);
}

答案 1 :(得分:0)

鉴于在加载RequireJS后使用data-main等同于使用require,您只需将JavaScript更改为:

var hostname = window.location.host.toLowerCase();
var config_path;
if(hostname.indexOf("domain1")!=-1) {
    config_path = "domain1-config";
}
else {
    config_path = "domain2-config";
}
require([config_path]);
当你已经知道它应该具有什么价值时,

data-main很方便。否则,扭曲代码以生成data-main客户端的值是没有好处的。使用它不会使事情加载得更快,也不会神奇地同步。

相关问题