Knu*_*Knu 4 javascript css webkit vendor-prefix
我试图编译性质由前缀-apple-和-khtml-是/是由WebKit的支持,其与自哪个版本,他们最终放弃或引入.
对他们施加的限制是什么?例如,你能找到它们document.body.style吗?
我想只有像这个臭虫的记者知道的人可以为我们提供准确的清单.但我更喜欢先问这里每个人都会从中受益......
这个版本是开始调查的好地方.
问题并不像你想象的那么简单.很容易比较受支持的CSS属性的"官方"列表的修订版,并确定它们被引入或退出的修订版; 但是,对遗留前缀的使用的支持也取决于CSS解析器实现如何处理它们.因此,您应该查阅下面的时间轴和旧的前缀属性的完整列表,以确定在给定的WebKit修订版中如何处理支持.
-apple并简要地说-moz!)将被归一化到-khtml幕后.-webkit作为替代品添加-khtml.-webkit
的属性将与传统前缀工作(即-apple和-khtml标准化为-webkit).所有剩余的旧版前缀都已更新-webkit到此修订版中.CSSGrammar.y到CSSParser.cpp.-apple-dashboard-region-apple-line-clamp-webkit
属性再次使用旧版前缀.(以前的更改已恢复.)以下列表是从支持的属性列表的提交历史记录中收集的.第一个数字是修订,其中对此属性的支持已添加到列表中; 第二个是删除它的修订版.重命名的属性与完全丢弃的属性之间没有区别.
在r13874中删除的属性在-webkit前缀下存活了一段时间,因此传统前缀可能会继续工作,具体取决于解析器处理它们的方式.(有关详细信息,请参阅上面的时间表.)
*虽然已被弃用,但-khtml-opacity后来-webkit-opacity得到了解析器的尊重,直到CSSProperties.in在r85212中引入了对别名的支持,并且仍然可-webkit-opacity用于最新版本.
-konq在很早的版本中支持了几个带前缀的属性:
从r13874开始,WebKit CSS解析器简单地将任何遗留前缀规范化为-webkit.基本上,所有带-webkit前缀的属性都使用-apple或-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;
}
Run Code Online (Sandbox Code Playgroud)
(这也解释了为什么你不能迭代这些属性 - document.body.style-sose属性已被具有相应-webkit属性的解析器替换.)
Peter Beverloo建议应该删除或逐步取消对这些属性的支持.短暂的时间内所有遗留属性都被禁用,但是除了-apple-dashboard-region和之外-apple-line-clamp,但由于无数的兼容性问题,这几天后就被恢复了.在较新的版本中,除非使用,否则将禁用旧版-apple和-khtml前缀.启用此功能标志后,解析器将允许上述旧行为.ENABLE(LEGACY_CSS_VENDOR_PREFIXES)