2

在我的项目要求中,我需要动态添加 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);
}
4

1 回答 1

3

如果您仍然使用 jQuery,则可以利用它们的loadScript()功能。他们网站上的一个例子:

$.getScript("ajax/test.js", function(data, textStatus, jqxhr) {
    // [...]
});

关于您当前的解决方案,这里有一些提示:

  1. 您设置defer = true,这会将动态加载的脚本的加载(和执行)推迟到最后。因此之后util.js。我不认为你想要那个
  2. 动态加载的 js 源代码不会出现在您页面的源代码中。您可能需要使用像 Firebug 这样的工具来验证是否已加载。
于 2013-06-10T11:26:53.440 回答