0

私のhtmlコードでは、外部jsファイルをインポートし、独自のインラインjsコードも持っています。独自のjsコードでは、外部jsファイルで定義されたオブジェクトのメソッドを呼び出す必要があります。レンダリング後、ソース コードは次のようになります。

<script type="text/javascript">
  // content of the extenral js file
  ...
  var bar = {};
  bar.foo = {};
  ...
  bar.foo.class = {};
  bar.foo.class.method = function() {...};
  ...
</script>
<script type="text/javascript">
  // content of my own javascript code
  ...
  function load() {
    ...
    bar.foo.class.method();
    ...
  }
  ...
</script>

私が使用しているフレームワークでは、2 つの部分を 1 か所で作成することはできません (つまり、両方が外部 js ファイルにあるか、両方が独自のインライン js コードにあります)。現在、このコードは Firefox、Chrome、および Safari では機能しますが、IE では機能しません。IE デバッガーは次のようなエラーを表示します:「プロパティ 'foo' の値を取得できません: オブジェクトが null または未定義です」

最初のタグで定義された bar.foo.class が 2 番目のタグから見えないか、2 番目のタグが最初のタグの前に実行されているようです (最初のタグはすべてクラス定義に関するもので、実際のワークフローはありません)。

IEでこれを回避する方法を知っている人はいますか? ありがとう!

4

2 に答える 2

0

このコードを試してください..可視性の問題かもしれません.....うまくいくと思います

    <script type="text/javascript">
      // content of the extenral js file
      ...
      var bar = {};
      bar.foo = {};
      ...
      bar.foo.class = {};
      bar.foo.class.method = function() {...};
      ...
    </script>
    <script type="text/javascript">
      // content of my own javascript code
var _bar = bar; 
      ...
      function load() {
        ...
        _bar.foo.class.method();
        ...
      }
      ...
    </script>

別のオプション.. var キーワードを使用しないようにすると、グローバルになります

<script type="text/javascript">
          // content of the extenral js file
          ...
          bar = {};
          bar.foo = {};
          ...
          bar.foo.class = {};
          bar.foo.class.method = function() {...};
          ...
        </script>
        <script type="text/javascript">
          // content of my own javascript code
          ...
          function load() {
            ...
            bar.foo.class.method();
            ...
          }
          ...
        </script>
于 2012-12-14T04:46:15.110 に答える