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 に答える