【问题标题】:SCRIPT16386 jQuery.contains in ie9 with quirks modeSCRIPT16386 jQuery.contains 在 ie9 中具有怪癖模式
【发布时间】:2013-07-03 17:33:48
【问题描述】:

我正在使用一个名为“deps.js”的外部库。我在 github 上 fork 并稍微修改了一下。你可以在这里找到它:

https://github.com/ckosmowski/jquery-interdependencies/blob/master/deps.js

不幸的是,我坚持使用 ie9 的怪癖模式。我收到以下错误:

SCRIPT16386 Schnittstelle nicht unterstützt

(可以翻译成“接口不支持”)

错误信息指的是:

jquery-1.7.js,第 5244 行字符 3,即:

if ( document.documentElement.contains ) {
Sizzle.contains = function( a, b ) {
    return a !== b && (a.contains ? a.contains(b) : true); //This is the line from the error message
};

在标准模式下不会出现。

  • 是什么导致了这个问题?
  • 如何找出导致此问题的原因?

【问题讨论】:

  • 如果你真的被卡在怪癖模式,那么你很可能无法解决这个问题。 Quirks 模式是一种与 IE5 兼容的模式,它故意从浏览器中删除大量功能以尝试与 IE5 兼容。你现在真的不应该在任何事情上使用怪癖模式,坦率地说,你也不应该被困在它上面——将网站转换为在标准模式下工作通常不是这样难的。 (查找box-sizing:border-box;它将解决大部分转换问题)
  • 谢谢。恕我直言,“您将无法解决此问题”是一个有效的答案,尤其是您提供的额外信息,因此请将您的评论转换为答案

标签: javascript jquery internet-explorer-9 quirks-mode


【解决方案1】:

我认为这不能解决 ma​​in 问题,但问题中提到的症状似乎可以通过较新的 jQuery 版本解决。我刚刚将 jQuery 版本从 1.7 更改为 1.10.2,现在它可以在 quirks 模式下完美运行。

【讨论】:

    【解决方案2】:

    按照 OP 的建议重新发布评论作为答案...

    如果您真的被卡在怪癖模式,那么您很可能无法解决这个问题。 Quirks 模式是一种与 IE5 兼容的模式,它故意从浏览器中删除大量功能以尝试与 IE5 兼容。

    这些天你真的不应该在任何事情上使用怪癖模式,坦率地说,你也不应该拘泥于它——将网站转换为在标准模式下工作通常并不难。 (查找 box-sizing:border-box;它将解决大部分转换问题)

    【讨论】:

    • 一般来说您是对的,但在某些情况下您无法更改环境,例如,超过 12 年的产品具有 API 可供合作伙伴自定义和添加东西。首先,您不会知道并且您无法测试是否会因某些现有的定制而破坏某些东西。其次,该产品是基于帧的,帧的行为尤其是帧间通信在怪癖模式下完全不同。不幸的是,怪癖模式在这里被滥用来为框架添加一些“功能”。