【发布时间】:2011-04-27 11:22:09
【问题描述】:
由于某种原因,我在 Internet Explorer 8 的 jquery.js(版本 1.4.3,非压缩版本)的第 3156 行收到以下 Javascript 错误:Object doesn't support this property or method。在 Firefox 和 Google Chrome 中不会出现错误。
这是发生错误的行:
if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {
调查 (console.log(Expr.leftMatch[type])) 产生以下有趣的结果:在 Google Chrome 中,它输出
/(^(?:.|\r|\n)*?):((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\3\))?(?![^\[]*\])(?![^\(]*\))/
但是在 Internet Explorer 中,这是输出:
function() {
var p = this;
do p = p.previousSibling;
while (p && p.nodeType != 1);
return p;
}
无法调用exec(未定义)。引用的函数在 jquery.js 中不存在。有谁知道为什么会发生这种情况,或者我能做些什么来解决它?
不幸的是,我还不能创建一个简单的脚本来重现这个问题,虽然我确实找到了this post of someone having the same problem,但它没有提供解决方案(最后一篇文章建议页面应该在标准模式下运行,但我的已经是)。
【问题讨论】:
-
在您打印“leftMatch”条目时,“type”的值是多少?
-
什么? - 这个错误信息对你来说不够具体吗? :-D(它几乎与“未定义不是函数”错误消息一样有用);-)
-
好吧,如果这是真的 - Sizzle 的内部表中有垃圾 - 那么某处出现了可怕的错误。
-
@Pointy:很明显,但是为什么呢?以及如何解决?为什么它只发生在 IE 中?
-
嗯,我想我从来没有见过这种情况,所以我不确定该怎么做。如果您使用的是 IE8,有 两种 兼容性模式需要检查:“浏览器模式”和“文档模式”。但听起来你很确定这一切都是正确的。
标签: javascript jquery internet-explorer sizzle