Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在IE9中动态添加脚本时未找到全局数组_Javascript_Dynamic_Cross Browser_Load_Internet Explorer 9 - Fatal编程技术网

Javascript 在IE9中动态添加脚本时未找到全局数组

Javascript 在IE9中动态添加脚本时未找到全局数组,javascript,dynamic,cross-browser,load,internet-explorer-9,Javascript,Dynamic,Cross Browser,Load,Internet Explorer 9,我有两个JavaScript文件:“一个”和“两个”。“一”文件动态添加“二”,如下所示: scriptNode = document.createElement('script'); scriptNode.type = 'text/javascript' scriptNode.src = '/JavaScript/Two.js'; document.getElementsByTagName("head")[0].appendChild(scriptNode); 然后,加载“两个”文件后,“一

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

scriptNode = document.createElement('script');
scriptNode.type = 'text/javascript'
scriptNode.src = '/JavaScript/Two.js';
document.getElementsByTagName("head")[0].appendChild(scriptNode);
然后,加载“两个”文件后,“一个”文件将使用其功能。 情况是这样的:

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
}
  • “一”文件加载“二”文件
  • 在“两个”文件中,当加载全局数组时,会声明一个全局数组
  • 在“一”文件函数中,调用“二”文件来填充全局数组
  • 填充全局数组的“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
    }
    
    在“One”文件中,我调用PopulateGlobalArray()函数

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

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

    <script src="/JavaScript/Two.js"></script>
    
    
    
    或者不使用JavaScript加载,它也在IE9上工作

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


    编辑:我很确定这与DOCTYPE有关。我使用的是严格的Doctype,但浏览模式:IE9和Dicument模式:Quirks不会导致错误。

    将GlobalArray添加到窗口对象如何。即window.GlobalArray=新数组()。不过,您可能只需要在前面加上var关键字。我以前试过使用“var”。window.GlobalArray=新数组();更改nothings,并且var window.GlobalArray=new Array();给我错误“预期';'”