我有一个非常依赖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主题。
答案 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(){}
};
}
这似乎对我们有用了。 :)