我想通过编译前缀属性 -apple-
和-khtml-
这是/是由WebKit 和自哪个版本 ,他们最终放弃或引入支持。
什么是强加给他们的限制? 例如,你可以发现他们在document.body.style
?
我想只有在知道有人像记者这种错误可以为我们提供一个准确的名单。 但我更喜欢在这里问大家首先这种方式将从中受益?
一个很好的开始你的调查是本次修订 。
我想通过编译前缀属性 -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
-and后-webkit-opacity
-was解析器兑现的权利,直到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;
}
(这也解释了为什么你无法通过这些属性重复document.body.style
-those性质已被替换与相应的解析器-webkit
属性。)
彼得Beverloo建议,这些属性的支持,应删除或淘汰很短的时间所有的传统特性被禁用 ,与例外-apple-dashboard-region
和-apple-line-clamp
,但这仅仅两天后恢复 ,因为无数的兼容性问题。 在较新的版本 ,旧的-apple
和-khtml
前缀禁止,除非有内置ENABLE(LEGACY_CSS_VENDOR_PREFIXES)
当启用该功能标志,解析器允许上述旧的行为。
if("WebkitAppearance" in document.body.style) {}
if("KhtmlAppearance" in document.body.style) {}
if("MozAppearance" in document.body.style) {}