繁体   English   中英

IE9 jQuery加载顺序问题

[英]IE9 jQuery load order issue

我有一个非常依赖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模式。 请注意,默认情况下,对于IE,我们强制使用“边缘”模式。

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

但是,这没有区别。

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

是否有人知道如果访问该页面的弓箭手是IE9,如何使页面以IE8模式呈现?

提前谢谢了。

我应该补充一点,有问题的页面上有一个'noscript'检查,因此如果JS不可用,则不会呈现。 这仅在IE9中是正确的。 对于所有其他浏览器,页面将正常显示。 我想知道上面的错误是否还有其他原因...

作为记录,我一直在查看此IE9 JavaScript错误:SCRIPT5007:无法获取属性'ui'的值:对象为null或未定义线程。

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

因此,可以使用更高版本的jQuery解决此问题。

目前,我会选择jQuery 1.11.0。 不要被2.x系列所吸引,它故意省略了许多向后兼容的内容。

不幸的是,这将意味着要重新限定所有使用jQuery的语言,这很痛苦。

我们的问题归结为IE无法识别“控制台”命令。 当我们运行许多console.log命令时,在IE9中到达这部分代码时,它停止了,并阻止了其他JS的加载。

因此,我们实现的解决方法是:如果未定义控制台(IE9),则定义一个空的对象常量

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

这似乎现在对我们有用。 :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM