CSS Cascasde Layersの追加など、Chrome 99 リリースノートまとめ
Published on
Chrome 99 のリリースノート関連の情報をまとめました。
- https://developer.chrome.com/blog/new-in-chrome-99/
- https://developer.chrome.com/blog/new-in-devtools-99/
- https://developer.chrome.com/blog/deps-rems-99/
- https://www.chromestatus.com/features#milestone%3D99
- https://v8.dev/blog/v8-release-99
New In Chrome (Chrome 99)
Chrome99 で新しく追加された機能です。
Chrome 100 and Firefox 100
Chrome 100 は今年の 3 月下旬、Firefox100 は 5 月上旬にリリースされます。 これらは両方ともメジャーバージョン番号が 3 桁にロールオーバーするアップデートです。 UserAgent をパースしたバージョン番号を2桁として解釈しているコードがある場合、新しいバージョン番号によって問題が発生する可能性があります。
Chrome では、#force-major-version-to-100
フラグを有効にすることで現在のバージョンを 100 に上書きし、挙動を確認することができます。
また、Firefox Nightly では「設定」メニューで、「Firefox100 ユーザーエージェント文字列」オプションを有効にすることで同様の確認が可能です。 両ブラウザでバージョン番号の解釈が期待どおりに機能することを確認できるように、サイトをテストすることをお勧めします。
CSS Cascasde Layers
CSS Cascade Layers が Chrome99、Firefox 97、Safari 15.4 Beta でサポートされました!
CSS セレクタの詳細度を上回るルールを@layer
で定義することができるようになります。
詳細は @nus3 が別途記事を書いたので次のリンクをご参考ください。
https://cybozu.github.io/frontend-expert/posts/css-cascade-layers
showPicker() for input elements
HTML InputElements に新しくshowPicker()
メソッドが実装されました。
これにより、日付だけでなく、時間、色、その他の<input>
要素でブラウザーピッカーを表示するための標準的な方法が整備されました。
利用する場合は、以下のように<input>
要素でshowPicker()
を呼び出します。またtry…catch
ブロックでこれらの処理を囲う事で、ブラウザーがshowPicker()
の API をサポートしていない場合、またはピッカーを表示できない場合のフォールバックを提供できます。
const button = document.querySelector("button");
const dateInput = document.querySelector("input");
button.addEventListener("click", () => {
try {
dateInput.showPicker();
// Dateピッカーの表示.
} catch (error) {
// ピッカーを表示できない場合のフォールバック
}
});
参考:
Show a browser picker for date, time, color, and files
And more!
CanvasRenderingContext2D
に次の機能が追加されました。
- Context がロストした時や復元した時のイベントハンドリングができるように(
ContextLost
,ContextRestored
) willReadFrequently
オプションの追加letter-spacing
など Canvas でサポートされていなかったテキストを修飾するプロパティの追加- Canvas の状態をリセットする
reset()
など
PWA のマニフェストにダークテーマに対応する設定が追加できるオリジントライアルが開始されたました。
また詳細はこの記事の後半に記載しますが、Handwriting Recognition API が使えるようになります。
What's New In DevTools (Chrome 98)
DevTools についてはこちらの日本語訳を参照ください。
https://developer.chrome.com/ja/blog/new-in-devtools-99/
書いてるうちにでなかったら、気になるものがあれば記載する
Deprecations and removals in Chrome 99
Remove Battery Status API on insecure origins
Battery Status API
は、HTTP ページや HTTP ページに埋め込まれた HTTPS の iframe などの安全でないオリジンでサポートされなくなりました。
Remove font-family -webkit-standard
font-family
の値として-webkit-standard
が削除されました。
Remove GamepadList
接続しているゲームパッドを取得できるnavigator.getGamepads()
の返り値がGamepadlList
からGamepad
のオブジェクトの配列を返すようになりました。
この変更により、Gecko と Webkit と同じく仕様と一致するようになります。
参考:
Update WebCodecs to match the specification
WebCodecs 仕様変更により、仕様に反していた以下の 2 つの部分について修正しました。
EncodeVideoChunkMetadata
オブジェクト内のtemporalLayerId
の場所VideoFrame()
コンストラクタでタイムスタンプ引数を指定しなかった際の挙動変更
詳しくはこちらを参照してください。
その他 Chrome Platform Status に記載されていたもの
Feature: "paintworklet" destination for PaintWorklet
CSS Houdiniの一部であるCSS Painting APIで使われる PaintWorklet のリクエストの送り先がscript
からpaintworklet
になりました。
Sec-Fetch-Dest
HTTP リクエストヘッダとFetchEvent.request.destination
で適用されます。
Feature: "audioworklet" destination for AudioWorklet
Web Audio API
のオーディオ処理を別スレッドで実行する仕組みである、AudioWorklet
のリクエストの送り先がscript
からaudioworklet
になりました。
Sec-Fetch-Dest
HTTP リクエストヘッダとFetchEvent.request.destination
で適用されます。
Feature: Allow infinity, -infinity and NaN in CSS calc()
CSS のcalc()
関数でinfinity
, -infinity
, NaN
などのキーワード、及びcalc(1/0)
のようにinfinity
やNaN
に評価される式による値を許容するようになりました。
Autofill in ShadowDOM
autofill
がform
要素内のフォームコントロールを収集する際に、ShadowDOM
も参照するようになります。これによりShadow DOM
内部の入力フォームでもautofill
が効くようになります。
Web コンポーネントを採用する際、input
要素のようなフォームコントロールをShadowDOM
で包むことが一般的になっていることを受けての改善となります。
Convert adoptedStyleSheets to use ObservableArray
document や shadowRoot にCSSStyleSheetを追加できるadoptedStyleShetts
で ObservableArray が使えるようになります。
今回から push などの通常の配列操作ができるようになります。
document.adoptedStyleSheets = [...adoptedStyleSheets, newSheet]; // これまで
document.adoptedStyleSheets.push(newSheet); // これから
Handwriting Recognition API
OS などにある既存の手書きの文字認識機能を web 上で扱えるようにするための API が追加されました。
※現状この API が利用できるのは ChromeOS のみで対応言語も英語に限られています。
参考:
Feature: Handwriting Recognition API
Unprefixed text-emphasis properties
CSS の text-emphasis プロパティが-webkit
なしで使えるようになります。
参考:
https://developer.mozilla.org/en-US/docs/Web/CSS/text-emphasis
V8 release v9.9
Intl.Locale extensions
Intl.Local オブジェクトに 7 つの新しいプロパティが追加されました。
calendars
, collations
, hourCycles
, numberingSystems
, timeZones
では他の Intl API で使用する好ましい識別子を返します。
const jaLocal = new Intl.Locale("ja");
console.log(jaLocal.calendars); // ['gregory', 'japanese']
console.log(jaLocal.collations); // ['unihan', 'emoji', 'eor']
console.log(jaLocal.hourCycles); // ['h23']
console.log(jaLocal.numberingSystems); // ['latn']
textInfo
はテキストに関連する情報をオブジェクトで返します。現状では CSS の direction プロパティで使用するような文字の並び順の値を返します。
(rtl が右から左へ、ltr が左から右へ)
arabicEgyptLocale.textInfo;
// { direction: 'rtl' }
japaneseLocale.textInfo;
// { direction: 'ltr' }
chineseTaiwanLocale.textInfo;
// { direction: 'ltr' }
weekInfo
は週に関連する情報を返します。
const jaLocal = new Intl.Local("ja");
console.log(jaLocal.weekInfo);
// 返される数字は 1 が月曜日、7 が日曜日
// {
// firstDay: 7,
// weekend: [6, 7],
// minimalDays: 1,
// }
Intl Enumeration
v8 でサポートされている識別子の配列を返すIntl.supportedValuesOf(code)
という新しい関数が追加されました。
サポートされるコード値は以下の 6 つです。
calendar
Intl.supportedValuesOf("calendar");
// ['buddhist', 'chinese', 'coptic', 'dangi', ...]
collation
Intl.supportedValuesOf("collation");
// ['big5han', 'compat', 'dict', 'emoji', ...]
currency
Intl.supportedValuesOf("currency");
// ['ADP', 'AED', 'AFA', 'AFN', 'ALK', 'ALL', 'AMD', ...]
numberingSystem
Intl.supportedValuesOf("numberingSystem");
// ['adlm', 'ahom', 'arab', 'arabext', 'bali', ...]
timeZone
Intl.supportedValuesOf("timeZone");
// ['Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', ...]
unit
Intl.supportedValuesOf("unit");
// ['acre', 'bit', 'byte', 'celsius', 'centimeter', ...]
この新しいメソッドによって、Web 開発者はどの値が実装でサポートされているかを簡単に発見できるようになります。
記事に関する報告などはこちらから