IE9 jQuery加载顺序问题

时间:2014-10-29 08:48:16

标签: javascript jquery internet-explorer-9

我有一个非常依赖jQuery的页面。 除IE9外,页面上的功能在所有浏览器中都能正常运行。 我理解的是IE9的问题,Javascript的加载速度非常慢。

我遇到的问题是页面一旦加载就认为Javascript不可用。

我在控制台中看到的错误是:

SCRIPT5007: Unable to get property 'length' of undefined or null reference
File: jquery-1.8.3.min.js, Line: 2, Column: 14331

为了记录,jQuery lib在任何其他js文件之前加载。

我试图通过在头部添加以下代码来解决此问题,尝试强制IE9进入IE8模式。请注意默认情况下我们强制使用' edge'模式。

<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<!--[if IE 9]>
        <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" />
    <![endif]-->

然而,这没有任何区别。

在有人问我们为什么依赖IE9之前,这是一项业务要求。

如果访问该页面的bowser是IE9,有没有人知道如何让IE8模式下的页面呈现?

非常感谢提前。

我应该补充一下,有问题的页面有一个&#39; noscript&#39;检查它,如果JS不可用则不会渲染。这只适用于IE9。对于所有其他浏览器,页面将呈现正常。 我想知道上面的错误是否是别的......

为了记录,我一直在看这个IE9 JavaScript error: SCRIPT5007: Unable to get value of the property 'ui': object is null or undefined主题。

2 个答案:

答案 0 :(得分:0)

据我了解,这是IE9下的jQuery问题,在jQuery 1.8.3之后的某个时刻已经修复了。

因此,问题很可能通过使用更高版本的jQuery来解决。

此时,我会选择jQuery 1.11.0。不要被2.x系列所诱惑,因为它故意省略了很多向后兼容的东西。

不幸的是,这将意味着重新使用jQuery的所有内容,这是一个痛苦。

答案 1 :(得分:0)

OUr问题归结为IE无法识别'console'命令。 当我们运行一些console.log命令时,当在IE9中到达这部分代码时,它停止了,并阻止任何其他JS加载。

所以我们实现的修复是:如果未定义控制台(IE9),则定义一个空对象文字

 if(!(window.console && console.log)) {
    console = {
        log: function(){},
        debug: function(){},
        info: function(){},
        warn: function(){},
        error: function(){}
    };
}    

这似乎对我们有用了。 :)