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>

对于我正在使用的框架,我无法将这两个部分放在一个地方(即两者都在外部 js 文件中,或者都在我自己的内联 js 代码中)。现在,此代码在 Firefox、Chrome 和 Safari 中有效,但在 IE 中无效。IE 调试器显示如下错误:“无法获取属性 'foo' 的值:对象为空或未定义”

看起来第一个标签中定义的 bar.foo.class 对第二个标签不可见,或者第二个标签在第一个标签之前执行(第一个标签是关于类定义的,没有真正的工作流)。

有谁知道如何在 IE 中解决这个问题?谢谢!

4

2 回答 2

0

该字class是保留字。使用其他类似的东西klass或做类似的东西foo["class"]

于 2012-12-14T05:45:49.480 回答
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 回答