在我的项目要求中,我需要动态添加java脚本 我有一个js文件global.js,它包含我想动态添加的所有全局变量。 我还想在util.js(使用global.js中定义的变量)之前添加global.js,这是没有发生的
如果我打开页面源代码,我看不到添加的global.js 我也希望这可以在所有浏览器中工作,主要在ie6和ie8
我的代码Index.html
<script src="../fw.ui.lib/resources/sap-ui-core.js" id="sap-ui-bootstrap"
data-sap-ui-libs="sap.ui.commons, sap.ui.table, sap.ui.ux3"
data-sap-ui-theme="sap_goldreflection">
</script>
<script src="../fw.ui/js/application_properties.js" type="text/javascript"></script>
<script src="../fw.ui/js/header.js" type="text/javascript"></script>
<script src="../fw.ui/js/dao/userDAO.js" type="text/javascript"></script>
<!-- add sap.ui.table,sap.ui.ux3 and/or other libraries to 'data-sap-ui-libs' if required -->
<script src="js/controls/DynamicJsLoad.js" type="text/javascript"></script>
<script></script>
<script>addScriptDynamically()</script>
<script src="js/controls/util.js" type="text/javascript"></script>
DynamicJsLoad.js
function loadScript(url){
var e = document.getElementsByTagName("script")[5];
var d = document.createElement('script');
d.src = url;
d.type = 'text/javascript';
d.async = false;
d.defer = true;
e.parentNode.insertBefore(d,e);
}
function addScriptDynamically(){
var scheme = getCacheBurstScheme();
if( scheme == 'dev'){
scheme = new Date();
}
loadScript('js/global.js'+'?scheme='+scheme);
}
答案 0 :(得分:3)
如果你正在使用jQuery,你可以利用他们的loadScript()
功能。他们网站上的一个例子:
$.getScript("ajax/test.js", function(data, textStatus, jqxhr) {
// [...]
});
关于您当前的解决方案,这里有几个提示:
defer = true
,这会将动态加载的脚本的加载(和执行)推迟到最后。因此util.js
之后。我认为你不想那样