【问题标题】:IE Javascript error "Object doesn't support this property or method" within jQueryjQuery 中的 IE Javascript 错误“对象不支持此属性或方法”
【发布时间】: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


【解决方案1】:

事实证明,经过几个小时的痛苦,我自己设法解决了这个问题。如果您在其他地方定义了Object.prototype.previousObject,Sizzle 选择器引擎似乎会以这种意想不到的方式中断(并且仅在 Internet Explorer 中)。

删除该声明,或将 previousObject 重命名为其他名称可以解决问题。

有趣的是,我什至自己把那个代码放在那里(Object.prototype.previousObject = [the function in my question]),但我不认识代码。

嗯,这又是浪费了开发潜力的一天。

【讨论】:

    【解决方案2】:

    我发现如果您尝试向 Object.prototype 添加一个名为“inherited”的方法,即Object.prototype.inherited = <some func>

    ,也会发生相同的行为

    它影响 IE6、7 和 8,但似乎已在 IE9(测试版)中修复

    【讨论】:

      【解决方案3】:

      回复可能为时已晚,但我遇到了同样的问题,并通过使用纯 java 脚本而不是 jquery 选择元素来解决!

        var div = document.getElementById("myDiv");
        var rect = div.getBoundingClientRect();
      

      这有点工作原理!

      【讨论】:

        猜你喜欢
        • 2011-02-02
        • 1970-01-01
        • 2011-08-25
        • 1970-01-01
        • 1970-01-01
        • 2011-03-23
        • 2011-02-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多