WebKit and its deprecated prefixes

I am trying to compile the properties with the -apple- and -khtml- , which are supported by WebKit, and since in which version they were eventually deleted or entered.
What are the restrictions placed on them? For example, can you find them in document.body.style ?

I think that only someone who knows how to reporter this mistake can provide us with an accurate list. But I prefer to ask here first that everyone benefits from this ...

A good place to start an investigation is this version .

+4
source share
2 answers

Introduction

The problem is not as simple as you think. Simply compare the versions of the β€œofficial” list of supported CSS properties and determine the versions by which they were entered or deleted; however, support for using legacy prefixes is also determined by how they are handled by the implementation of the CSS parser. Therefore, you should consult both the timeline and the full list of deprecated prefix properties below to determine how support is handled in this WebKit revision.

Timeline for parser changes associated with legacy property support

List of obsolete properties and changes / retired

The following is a list of commit history for a list of supported properties . The first number is a revision in which support for this property has been added to the list; the second is the revision in which it was deleted. No distinction is made between renaming an object, and not falling directly.

Properties removed in r13874 continued for some time in the -webkit prefix, so legacy prefixes may continue to work depending on how they are processed by the parser. (For details, see the Timeline above.)

  • -apple-dashboard-region: r7588 to r9101
  • -apple-line-clamp: r6391 - r9101
  • -apple-text-size-adjust: r6805 - r9101
  • -khtml-appearance: r9828 - r13874
  • -khtml-binding: r5967 to r13874
  • -html-border-horizontal-spacing: r5212 - r13874
  • -khtml-border-vertical-spacing: r5212 - r13874
  • -khtml-box-align: r4704 to r13874
  • -khtml-box-direction: r4704 to r13874
  • -khtml-box-flex: r4704 to r13874
  • -khtml-box-flex-group: r4704 to r13874
  • -html-box-flex-group-transition: r6758 to r6802
  • -khtml-box-lines: r4704 to r13874
  • -khtml-box-ordinal-group: r4704 to r13874
  • -khtml-box-orient: r4704 to r13874
  • -khtml-box-pack: r4704 - r13874
  • -html-dashboard-region: r9101 to r13874
  • -html-flow-mode: r4704 to r8041
  • -khtml-font-size-delta: r8382 - r13874
  • -khtml-horizontal-border-spacing: r5200 to 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 to r13874
  • -khtml-margin-top-collapse: r7362 - r13874
  • -khtml-marquee: r5301 - r13874
  • -html-marquee-direction: r5301 to r13874
  • -khtml-marquee-increment: r5301 - r13874
  • -html-marquee-repeat: r5301 - r13874
  • -khtml-marquee-speed: r5301 - r13874
  • -khtml-marquee-style: r5301 - r13874
  • -khtml-match-near-mail-blockquote-color: r8642 - r13874
  • -khtml-nbsp-mode: r7763 - r13874
  • -khtml-opacity: r4704 to r5340 *
  • -khtml-padding-start: r7708 to r13874
  • -khtml-rtl-ordering: r12027 - r13874
  • -khtml-text-decorations-in-effect: r8466 - r13874
  • -khtml-text-size-adjust: r9101 - r13874
  • -html-user-drag: r6728 - r13874
  • -khtml-user-modify: r5970 - r13874
  • -khtml-user-select: r6728 - r13874
  • -khtml-vertical-border-spacing: r5200 to r5212

* Although the obsolete -khtml-opacity - and later -webkit-opacity - was honored by the analyzer until CSSProperties.in introduced the alias support in r85212 and remained available as -webkit-opacity until the latest version.

Very early versions supported several properties with the -konq prefix:

  • -konq-flow-mode: r4 to r4704
  • -konq-js-clip: r798 to r3695

History today

Starting with r13874, the WebKit CSS parser simply normalized any legacy prefixes to -webkit . Essentially, all the -webkit prefix properties worked with the -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; } 

(This also explains why you cannot iterate over these properties in document.body.style - these properties have been replaced by the parser with the corresponding -webkit property.)

Peter Beverloo suggested that support for these properties should be removed or phased out. For a short time, all deprecated properties were disabled , except for -apple-dashboard-region and -apple-line-clamp , but this was returned a few days later due to a multitude of compatibility issues. In later versions, the obsolete -apple and -khtml disabled if not built using ENABLE(LEGACY_CSS_VENDOR_PREFIXES) . When this function flag is enabled, the analyzer resolves the older behavior described above.

+6
source
 if("WebkitAppearance" in document.body.style) {} if("KhtmlAppearance" in document.body.style) {} if("MozAppearance" in document.body.style) {} 
-1
source

All Articles