4

我正在尝试编译以 WebKit为前缀的属性,以及WebKit 支持/支持的属性,-apple-以及它们最终被删除或引入的版本。 对他们施加的限制是什么?例如,你能在 中找到它们吗?-khtml-
document.body.style

我想只有像这个 bug的报告者这样的知情人士才能为我们提供准确的列表。但我更喜欢先在这里问,这样每个人都会从中受益……</p>

开始您的调查的一个好地方是这个版本

4

2 回答 2

6

介绍

问题并不像你想象的那么简单。比较受支持的 CSS 属性的“官方”列表的修订版并确定引入或停用它们的修订版是很容易的;但是,对使用遗留前缀的支持也取决于 CSS 解析器实现的处理方式。因此,您应该参考下面的时间线和遗留前缀属性的完整列表,以确定在给定的 WebKit 修订中如何处理支持。

与遗留属性支持相关的解析器更改时间表

引入/停用的遗留属性和修订列表

下面的列表是从受支持属性列表的提交历史记录中收集的。第一个数字是对该属性的支持添加到列表中的版本;第二个是删除它的修订版。属性被重命名和被彻底删除之间没有区别。

r13874中删除的属性在前缀下存在了一段时间-webkit,因此遗留前缀可能会继续工作,具体取决于解析器如何处理它们。(有关更多详细信息,请参阅上面的时间线。)

  • -apple-dashboard-region: r7588 到 r9101
  • -苹果线夹: r6391 到 r9101
  • -apple-text-size-adjust: r6805 到 r9101
  • -khtml-外观: r9828 到 r13874
  • -khtml 绑定: r5967 到 r13874
  • -khtml-border-horizo​​ntal-spacing: r5212 到 r13874
  • -khtml-border-vertical-spacing: r5212 到 r13874
  • -khtml-box-align: r4704 到 r13874
  • -khtml-box-direction: r4704 到 r13874
  • -khtml-box-flex: r4704 到 r13874
  • -khtml-box-flex-group: r4704 到 r13874
  • -khtml-box-flex-group-transition: r6758 到 r6802
  • -khtml-box-lines: r4704 到 r13874
  • -khtml-box-ordinal-group: r4704 到 r13874
  • -khtml-box-orient: r4704 到 r13874
  • -khtml-box-pack: r4704 到 r13874
  • -khtml-dashboard-region: r9101 到 r13874
  • -khtml-流模式: r4704 到 r8041
  • -khtml-font-size-delta: r8382 到 r13874
  • -khtml-水平边框间距: r5200 到 r5212
  • -khtml-line-break: r7763 到 r13874
  • -khtml-line-clamp: r9101 到 r13874
  • -khtml-margin-bottom-collapse: r7362 到 r13874
  • -khtml-margin-collapse: r7362 到 r13874
  • -khtml-margin-start: r7708 到 r13874
  • -khtml-margin-top-collapse: r7362 到 r13874
  • -khtml-选框: r5301 到 r13874
  • -khtml-选框方向: r5301 到 r13874
  • -khtml-marquee-increment: r5301 到 r13874
  • -khtml-marquee-repetition: r5301 到 r13874
  • -khtml-marquee-speed: r5301 到 r13874
  • -khtml-选框样式: r5301 到 r13874
  • -khtml-match-nearest-mail-blockquote-color: r8642 到 r13874
  • -khtml-nbsp-mode: r7763 到 r13874
  • -khtml-不透明度: r4704 到 r5340 *
  • -khtml-padding-start: r7708 到 r13874
  • -khtml-rtl-ordering: r12027 到 r13874
  • -khtml-text-decorations-in-effect: r8466 到 r13874
  • -khtml-text-size-adjust: r9101 到 r13874
  • -khtml-用户拖动: r6728 到 r13874
  • -khtml-user-modify: r5970 到 r13874
  • -khtml-user-select: r6728 到 r13874
  • -khtml-vertical-border-spacing: r5200 到 r5212

*虽然已被弃用,但-khtml-opacity- 以及后来-webkit-opacity- 直到 CSSProperties.in 在 r85212 中引入对别名的支持之前,解析器才接受-webkit-opacity,并且在最新版本中仍然可用。

-konq在很早的版本中支持几个前缀属性:

  • -konq 流模式: r4 到 r4704
  • -konq-js-clip: r798 到 r3695

今天的故事

从 r13874 开始,WebKit CSS 解析器简单地将任何遗留前缀规范化为-webkit. 本质上,所有-webkit带前缀的属性都使用-appleor-khtml前缀:

// If the prefix is -apple- or -khtml-, change it to -webkit-.
// This makes the string one character longer.
if (hasPrefix(buffer, length, "-apple-") || hasPrefix(buffer, length, "-khtml-")) {
    memmove(buffer + 7, buffer + 6, length + 1 - 6);
    memcpy(buffer, "-webkit", 7);
    ++length;
}

(这也解释了为什么你不能遍历这些属性——document.body.style那些属性已经被解析器替换为相应的-webkit属性。)

Peter Beverloo 建议应该删除或逐步淘汰对这些属性的支持在短时间内,所有遗留属性都被禁用,除了-apple-dashboard-regionand -apple-line-clamp,但由于无数的兼容性问题,这在几天后被恢复了。在较新的版本中,除非使用. 启用此功能标志后,解析器将允许上述旧行为。-apple-khtmlENABLE(LEGACY_CSS_VENDOR_PREFIXES)

于 2012-08-01T12:35:10.380 回答
-1
if("WebkitAppearance" in document.body.style) {}
if("KhtmlAppearance" in document.body.style) {}
if("MozAppearance" in document.body.style) {}
于 2012-08-06T04:26:01.497 回答