WebKit 及其遗留前缀

2024-01-28

我正在尝试编译特性前缀为-apple- and -khtml-WebKit 支持哪些and since 哪个版本它们最终被放弃或引入。
他们受到什么限制?例如,您可以在以下位置找到它们吗?document.body.style?

我猜只有像记者这样知情的人this bug https://bugs.webkit.org/show_bug.cgi?id=83256可以为我们提供准确的清单。 但我更喜欢先在这里问,这样每个人都会从中受益......

开始调查的好地方是本次修订 http://trac.webkit.org/changeset/64071.


介绍

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

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

  • 2003 年 5 月 5 日 (r9101) http://trac.webkit.org/browser/trunk/WebCore/khtml/css/parser.y?rev=9101: -apple(并简要地-moz!) 将被标准化为-khtml在幕后。
  • 2005 年 8 月 30 日 (r10397) http://trac.webkit.org/browser/trunk/WebCore/khtml/css/parser.y?rev=10397: -webkit添加作为替代-khtml.
  • 2006 年 6 月 14 日 (r13874) http://trac.webkit.org/browser/trunk/WebCore/css/CSSGrammar.y?rev=13874: all -webkit特性将使用旧前缀(即-apple and -khtml被标准化为-webkit)。所有剩余的旧前缀均已更新为-webkit在本次修订中。
  • 2008 年 2 月 19 日 (r30393) http://trac.webkit.org/browser/trunk/WebCore/css/CSSParser.cpp?rev=30393:旧的前缀处理移自CSSGrammar.y to CSSParser.cpp.
  • 2010 年 7 月 21 日 (r63854) http://trac.webkit.org/browser/trunk/WebCore/css/CSSParser.cpp?rev=63854: no遗留前缀 均受支持,除了-apple-dashboard-region and -apple-line-clamp.
  • 2010 年 7 月 26 日 (r64071) http://trac.webkit.org/browser/trunk/WebCore/css/CSSParser.cpp?rev=64071: all -webkit特性再次使用旧前缀。 (之前的更改 已恢复。)
  • 2012 年 4 月 10 日 (r113795) http://trac.webkit.org/browser/trunk/Source/WebCore/css/CSSParser.cpp?rev=113795: no遗留前缀 除非特别启用,否则受支持。

遗留属性和引入/淘汰的修订列表

下面的列表是从。第一个数字是修订版,其中对此属性的支持已添加到列表中;第二个是删除它的修订版。重命名属性与彻底删除属性之间没有区别。

删除的属性r13874 http://trac.webkit.org/browser/trunk/WebCore/css/CSSPropertyNames.in?rev=13874在以下情况下生活了一段时间-webkit前缀,因此旧前缀可能会继续工作,具体取决于解析器如何处理它们。 (有关更多详细信息,请参阅上面的时间表。)

  • -苹果仪表板区域:r7588 至 r9101
  • -苹果线夹:r6391 至 r9101
  • -苹果文本大小调整:r6805 至 r9101
  • -khtml-外观:r9828 至 r13874
  • -khtml-绑定:r5967 至 r13874
  • -khtml-边框-水平间距:r5212 至 r13874
  • -khtml-边框-垂直间距:r5212 至 r13874
  • -khtml-box-align:r4704 至 r13874
  • -khtml-box-方向: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-仪表板区域:r9101 至 r13874
  • -khtml-流模式:r4704 至 r8041
  • -khtml-字体大小-增量:r8382 至 r13874
  • -khtml-水平边框间距:r5200 至 r5212
  • -khtml换行符:r7763 至 r13874
  • -khtml-线夹:r9101 至 r13874
  • -khtml-margin-bottom-collapse:r7362 至 r13874
  • -khtml-边距-折叠:r7362 至 r13874
  • -khtml-边距-开始:r7708 至 r13874
  • -khtml-margin-top-collapse:r7362 至 r13874
  • -khtml-选取框:r5301 至 r13874
  • -khtml-选取框方向:r5301 至 r13874
  • -khtml-选取框-增量:r5301 至 r13874
  • -khtml-选取框-重复:r5301 至 r13874
  • -khtml-选取框速度:r5301 至 r13874
  • -khtml 选取框样式:r5301 至 r13874
  • -khtml-match-nearest-mail-blockquote-color:r8642 至 r13874
  • -khtml-nbsp-模式:r7763 至 r13874
  • -khtml-不透明度:r4704 至 r5340*
  • -khtml-填充-开始:r7708 至 r13874
  • -khtml-rtl-排序:r12027 至 r13874
  • -khtml-text-decorations-in-effect:r8466 至 r13874
  • -khtml-文本大小调整:r9101 至 r13874
  • -khtml-用户拖动:r6728 至 r13874
  • -khtml-用户修改:r5970 至 r13874
  • -khtml-用户选择:r6728 至 r13874
  • -khtml-垂直边框间距:r5200 至 r5212

*虽然已被弃用,-khtml-opacity-然后-webkit-opacity—直到 CSSProperties.in 引入对别名的支持之前,解析器一直很荣幸r85212 http://trac.webkit.org/changeset/85212,并且仍然可用-webkit-opacity到最新版本。

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

  • -konq-流模式:r4 至 r4704
  • -konq-js-剪辑:r798 至 r3695

今天的故事

自 r13874 起,WebKit CSS 解析器只是将任何旧版前缀标准化为-webkit。本质上,所有-webkit前缀属性与-apple or -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 建议对这些财产的支持应该是删除或逐步淘汰 https://bugs.webkit.org/show_bug.cgi?id=42093短暂的一段时间所有旧属性均已禁用 http://trac.webkit.org/browser/trunk/WebCore/css/CSSParser.cpp?rev=63854,除了-apple-dashboard-region and -apple-line-clamp,但这是几天后就恢复了 http://trac.webkit.org/browser/trunk/WebCore/css/CSSParser.cpp?rev=64071由于无数的兼容性问题。在较新的修订版 http://trac.webkit.org/browser/trunk/Source/WebCore/css/CSSParser.cpp?rev=113795, 遗产-apple and -khtml前缀是除非使用以下内容构建,否则禁用ENABLE(LEGACY_CSS_VENDOR_PREFIXES) https://bugs.webkit.org/show_bug.cgi?id=83256。当启用此功能标志时,解析器允许上述旧行为。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WebKit 及其遗留前缀 的相关文章

随机推荐

  • C# + 运算符调用 string.concat 函数? [复制]

    这个问题在这里已经有答案了 可能的重复 C 是否优化字符串文字的串联 https stackoverflow com questions 288794 does c sharp optimize the concatenation of s
  • AngularJS 中文本框更改时延迟调用函数

    似乎无法通过谷歌搜索如何完成此操作的示例 我已经成功创建了一个文本框 每次更改时都会调用一个函数 我想做的只是当用户停止输入 x 毫秒时才调用该函数 我知道如何使用 keyup 事件在 JQuery 中执行此操作 并且可能可以使其以这种方式
  • 使用 VSCode 创建并运行 Dart 控制台应用程序?

    我可以使用 VSCode 创建 Flutter 新应用程序 现在我想学习Dart编程语言 如何使用 VS Code 创建并运行 Dart 控制台应用程序 有一种简单的方法可以创建和运行 Dart 控制台应用程序 打开 VSCode 在 Ma
  • 将 Pandas DataFrame 写入换行符分隔的 JSON

    我首先通过 pandas read csv 函数将 CSV 读入 Pandas 数据帧 现在数据位于实际的数据框中 我尝试编写如下内容 for row in df iterrows row 1 to json path to file 这是
  • 在 MATLAB 中添加包围向量中 1 的其他值的附加值

    给定 MATLAB 中的零和一向量 其中零代表时间事件 我想在现有向量之前和之后添加额外的向量 以捕获额外的变化 Example 我想转 0 0 1 0 0 into 0 1 1 1 0 where 1 是新添加的 假设A为输入列向量 Fi
  • 根据位置重新排序行 SQL Server

    我在 SO 上看到了很多关于这个问题的问题 但没有一个与我的场景相关 除了基本的 CRUD 操作之外 我还算不上一个 SQL 专家 因此我对此很坚持 我有一张桌子 myTable rID newsID OrderPosition where
  • 在 Spark 中保存有序数据帧

    我正在尝试将有序数据帧保存到 HDFS 中 我的代码如下所示 dataFrame orderBy index write mode SaveMode Overwrite parquet getPath 我在两个不同的集群上运行相同的代码 一
  • 如何在 PHPUnit 测试中显示底层测试方法?

    我有测试套件 里面有很多测试 这是一个中等大小的 ok 4 CommodityBasketTest testStartsOutEmpty ok 5 CommodityBasketTest testCanAddACommodity ok 6
  • 为什么不应该使用 F# 异步工作流程来实现并行性?

    我最近一直在学习 F 对其轻松利用数据并行性特别感兴趣 这data gt Array map gt Async Parallel gt Async RunSynchronously习语似乎很容易理解 易于使用并从中获得真正的价值 那么为什么
  • 如何将 git 存储库设置为只读?

    我有一些通过 SSH 远程访问的 git 存储库 我想将其中一些设置为只读以防止更多推送 有些人有指向这些存储库的遥控器 这些裸存储库已初始化 shared group 那么将所有文件的文件权限设置为 660 是否足以仍然允许 SSH 访问
  • 如何在 python 中转义正斜杠,以便 open() 将我的文件视为要写入的文件名,而不是要读取的文件路径?

    让我先说我是不太确定我的代码发生了什么 我对编程相当陌生 我一直在为我的 python CS 课程创建一个单独的最终项目 该项目每天检查我老师的网站 并确定自上次程序运行以来他是否更改了他网站上的任何网页 我现在正在执行的步骤如下 def
  • 如何解决Sonar错误:无法加载组件类org.sonar.scanner.scan.ProjectLock

    我在 netbeans 项目上运行 Sonar 时遇到一些问题 它不起作用 我有以下错误 C Users remy fischer Desktop NetBeansProjects NetBeansProjects BinPacking s
  • Xcode 项目在文档大纲中显示为灰色

    我一直在使用 iCloud 将我正在处理的 Xcode 项目从笔记本电脑 同步 到桌面 不幸的是 它似乎运作得不太好 我今天在台式机上打开了一个昨天在笔记本电脑上工作的项目 If I open the file on the desktop
  • 使用 jQuery 获取 ListBox 中选定项目的数量

    如主题中所述 当用户选择新项目时 如何使用 jQuery 获取 ListBox 中选定项目的计数 我有这些代码 Html ListBoxFor x gt Model StatesID Model States new class chzn
  • 十进制小时变成时间?

    我在数据库中有一个小时字段 例如 1 4 1 5 1 7 我需要将其转换回 HH MM 做到这一点最简单的方法是什么 TimeSpan FromHours http msdn microsoft com en us library syst
  • HttpSessionListener 不起作用

    我已经实现了 HttpSessionListiner 但它不起作用 用调试器检查 输入 servlet 后创建新会话 登录后 JSESSION ID 发生变化 但 session getCreateTime 保持不变 会话保持不变 使用注释
  • Erlang集群

    我正在尝试使用 Erlang 作为将所有组件粘合在一起的粘合剂来实现一个集群 我喜欢它创建一个完全连接的节点图的想法 但在在线阅读不同的文章后 似乎这不能很好地扩展 最多有 50 100 个节点 OTP 的开发者是否故意施加此限制 我确实知
  • 调用未定义函数curl_file_create() [文件处理]

    我正在尝试使用curl上传文件 在PHP文档中它说 要发布文件 请在文件名前面添加 并使用完整路径 可以通过在文件名后面加上格式为 type mimetype 的类型来显式指定文件类型 此参数可以作为 urlencoded 字符串 如 pa
  • FBSDK 登录错误代码:Objective-C 中的 308

    我不断得到 Error Domain com facebook sdk login Code 308 操作无法 完成 com facebook sdk login 错误 308 尝试从我的设备登录 Facebook 时 我的代码可以在模拟器
  • WebKit 及其遗留前缀

    我正在尝试编译特性前缀为 apple and khtml WebKit 支持哪些and since 哪个版本它们最终被放弃或引入 他们受到什么限制 例如 您可以在以下位置找到它们吗 document body style 我猜只有像记者这样