2014-10-29 35 views
0

我有一个相当jQuery依赖的页面。 页面上的功能在除IE9以外的所有浏览器中均正常工作。 这个我理解的是IE9的问题,Javascript的加载速度很慢。IE9 jQuery加载顺序问题

我面对的问题是,一旦加载页面认为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模式来解决此问题。默认情况下,我们强调'边缘'模式。

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

但是,这没有什么区别。

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

有没有人有任何想法如何让页面呈现在IE8模式下,如果浏览器的页面是IE9?

非常感谢提前。

我应该补充说,有问题的页面上有一个'noscript'检查,所以如果JS不可用,将不会呈现。这仅在IE9中才是真实的。对于所有其他浏览器,该页面将呈现正常。 我想知道如果上述错误是别的...

备案,我一直在看IE9 JavaScript error: SCRIPT5007: Unable to get value of the property 'ui': object is null or undefined线程。

回答

0

据我所知,这是jQuery在IE9下的一个问题,它在jQuery 1.8.3之后的某个时间点已经修复。

所以这个问题很可能通过使用更高版本的jQuery来解决。

在这个时候,我会选择jQuery 1.11.0。不要被2.x系列诱惑,它故意省略很多向后兼容的东西。

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

+0

悲伤地移动到1.11没有帮助。 你可以验证我用上面设置IE8兼容性的代码是否合法? (我不是一个js编码器 - Java是我的领域。):) – Keith 2014-10-29 14:22:20

+0

恐怕我对IE8 compat'hack的了解不再多于它在问题中提供的链接中所说的内容。当你尝试jQuery 1.11。0,黑客被压制 - 是吗? – 2014-10-29 14:27:57

+0

说实话,我完全删除了黑客,更多地关注一个新的jQuery lib会导致其他问题。我需要确保基本功能保持完好,可惜它没有。 – Keith 2014-10-29 15:05:30

0

我们的问题是IE不能识别'console'命令。 当我们运行一些console.log命令时,在IE9中达到这部分代码时,它停止,并阻止加载任何其他JS。

因此,我们已经实现了解决方法是:如果控制台没有定义(IE9),定义一个空对象文本

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

这似乎是现在的工作对我们来说。 :)