4

WebKitで接頭辞が付けられ、サポートされているプロパティと、最終的に削除または導入されたバージョン以降のプロパティをコンパイルしようとしています。 それらに課せられる制限は何ですか?たとえば、あなたはそれらを見つけることができますか?-apple--khtml-
document.body.style

このバグのレポーターのような知識のある人だけが正確なリストを提供できると思います。しかし、私は最初にここでこの方法で誰もがそれから利益を得るだろうと尋ねることを好みます…</ p>

調査を開始するのに適した場所は、このリビジョンです。

4

2 に答える 2

6

序章

問題はあなたが思うほど単純ではありません。サポートされているCSSプロパティの「公式」リストのリビジョンを比較し、それらが導入または廃止されたリビジョンを判別するのは簡単です。ただし、レガシープレフィックスの使用のサポートは、CSSパーサー実装によるそれらの処理方法によっても決定されます。したがって、タイムラインと以下のレガシープレフィックスプロパティの完全なリストの両方を参照して、特定のWebKitリビジョンでサポートがどのように処理されるかを判断する必要があります。

レガシープロパティのサポートに関連するパーサーの変更のタイムライン

  • 2003年5月5日(r9101) :(-appleそして簡単に-moz!)-khtml舞台裏に正規化されます。
  • 2005年8月30日(r10397)-webkitの代わりに追加されました-khtml
  • 2006年6月14日(r13874)すべての-webkit プロパティはレガシープレフィックスで機能します(つまり-apple-khtmlに正規化され-webkitます)。-webkitこのリビジョンでは、残りのすべてのレガシープレフィックスがに更新されました。
  • 2008年2月19日(r30393):レガシープレフィックス処理がからに移動しCSSGrammar.yましたCSSParser.cpp
  • 2010年7月21日(r63854):と を除いてレガシープレフィックスはサポートされていません-apple-dashboard-region-apple-line-clamp
  • 2010年7月26日(r64071)すべての-webkit プロパティがレガシープレフィックスで再び機能します。(以前の変更は元に戻りました。)
  • 2012年4月10日(r113795):特に有効にしない限り、レガシープレフィックスはサポートされません。

導入/廃止されたレガシープロパティとリビジョンのリスト

以下のリストは、サポートされているプロパティのリストのコミット履歴から収集されたものです。最初の番号は、このプロパティのサポートがリストに追加されたリビジョンです。2つ目は、削除されたリビジョンです。完全に削除されるのではなく、名前が変更されるプロパティは区別されません。

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-flow-mode: r4704からr8041
  • -khtml-font-size-delta: r8382からr13874
  • -khtml-horizo​​ntal-border-spacing: r5200からr5212
  • -khtml-改行: 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-marquee-direction: r5301からr13874
  • -khtml-marquee-増分: r5301からr13874
  • -khtml-marquee-繰り返し: r5301からr13874
  • -khtml-marquee-speed: r5301からr13874
  • -khtml-marquee-style: 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-順序: r12027からr13874
  • -khtml-text-decorations-in-effect: r8466からr13874
  • -khtml-text-size-adjust: r9101からr13874
  • -khtml-user-drag: r6728からr13874
  • -khtml-user-modify: r5970からr13874
  • -khtml-user-select: r6728からr13874
  • -khtml-vertical-border-spacing: r5200からr5212

*廃止されましたが、 -khtml-opacityCSSProperties.inがr85212-webkit-opacityでエイリアスのサポートを導入するまで、パーサーによって尊重され、最新のリビジョンに関しては引き続き利用可能です。-webkit-opacity

-konq非常に初期のリビジョンでは、いくつかのプレフィックス付きプロパティがサポートされていました。

  • -konq-flow-mode: 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-region-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 に答える