在IE中调用另一个脚本标记中的类方法的Javascript失败

时间:2012-12-14 04:28:20

标签: javascript

在我的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'的值:对象为null或未定义”

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

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

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

单词class是保留字。使用klass之类的其他内容或执行foo["class"]之类的内容。