IE8通过命名空间调用函数的问题

时间:2014-03-21 15:48:11

标签: javascript internet-explorer

我有两个js文件。我在我的js文件中使用命名空间。这是第一个JS文件的样子:

(function(common, undefined) {
    "use strict";

    common.FunctionOne = function(){
        //do something
    };

}(window.common = window.common || {}));

第二个js文件如下所示:

(function(processing, undefined) {
    "use strict";

    processing.FunctionTwo = function(){
         common.FunctionOne()
    };

}(window.processing = window.processing || {}));

在我的HTML页面上,我已经包含了第一个js和第二个js(通过标签)。我收到错误"无法获得财产' FunctionOne'未定义或空引用"仅在IE8中。它适用于其他浏览器。

我不确定,但它看起来像是一些名称空间问题。看起来IE8无法识别第一个js文件中定义的函数。

有什么想法吗?

感谢。

1 个答案:

答案 0 :(得分:-1)

嗨,我尝试重现错误 link to jsfiddle

(function(common, undefined) {
    "use strict";

    common.FunctionOne = function(){
        //do something
      $("#one").html("Hi you");
    };

}(window.common = window.common || {}));

(function(processing, undefined) {
    "use strict";

    processing.FunctionTwo = function(){
         common.FunctionOne();
    };

}(window.processing = window.processing || {}));
window.processing.FunctionTwo();

没有文件只有一个js与两个模块似乎工作,尝试打开小提琴,首先要知道的是¿代码本身是否失败?

如果它工作正常,我们可以尝试确保,¿在两种情况下都是相同的窗口对象? 如果存在iframe,则可以在错误的窗口对象中设置代码

您可以尝试添加调试器;第二个函数中的行,并形成控制台查看窗口对象,看看它有什么属性