0

我有两个 JavaScript 文件:“一个”和“两个”。“一”文件正在动态添加“二”,如下所示:

scriptNode = document.createElement('script');
scriptNode.type = 'text/javascript'
scriptNode.src = '/JavaScript/Two.js';
document.getElementsByTagName("head")[0].appendChild(scriptNode);

然后,在加载“Two”文件后,“One”文件正在使用它的功能。情况是这样的:

  1. “一”文件加载“二”文件。
  2. 在“Two”文件中,全局数组在加载时被声明。
  3. 在“一”文件中调用“二”文件中的函数来填充全局数组。

填充全局数组的“Two”文件中的函数如下所示:

GlobalArray=new Array();

function Init(name){
    this.name=name;
}

function PopulateGlobalArray(name){
    var temp=new Init(name);
    GlobalArray.push(temp);

    console.log(GlobalArray.length); // returns "1"
    OtherStuff();
}

function OtherStuff(){
    console.log(GlobalArray.length); // returns "0" only in IE9
}

在“一个”文件中,我调用 PopulateGlobalArray() 函数。

在每个浏览器(Opera、Firefox、Ghrome、IE7、IE8、IE10)OtherStuff()console.log()返回1. 在 IE9 中,它返回0- 数组只是空的。

我花了很多时间,但最后我发现如果我在 HTML 中包含“Two”文件作为

<script src="/JavaScript/Two.js"></script>

或者不使用 JavaScript 加载它,它也适用于 IE9。

我的问题是有人知道为什么会这样吗?

编辑:我很确定这与 DOCTYPE 有关。我使用的是 Strict Doctype,但 Browse Mode:IE9 with Dicument Mode: Quirks 不会导致错误。

4

0 回答 0