Firefox 121 for developers
==========================

このページでは、開発者に影響する Firefox 121 の変更点をまとめています。Firefox 121 は、米国時間 2023 年 12 月 19 日 にリリースされました。。

ウェブ開発者向けの変更点一覧
--------------

### HTML

* `<iframes>` の 遅延読み込み をサポートしました。特定の `<iframe>` が、表示されたときに限り読み込まれるべきであると開発者が示すことができます。これはページを読み込むときに取得しなければならないリソースを削減する (一部の `<iframes>` を取得する必要がない) ことで、最初の読み込み時間を短縮できます。
 このヒントは `<iframe>` 要素の `loading` 属性か、JavaScript で `HTMLIFrameElement.loading` (en-US) を使用して提供できます (Firefox bug 1622090)。
### CSS

* `text-wrap` (en-US) プロパティを、値 `balance` および `stable` をサポートするように更新しました。値 `balance` は見出しなど短いブロックのコンテンツで使用するもので、コンテンツが複数行にまたがるときにバランスがとれて読みやすくなります。値 `stable` は、編集可能なコンテンツをユーザーが編集するときにリフローしなくなります (Firefox bug 1731541)。
* よく親セレクターと呼ばれる、`:has()` セレクターをサポートしました。これは開発者が、関連する要素に基づいて要素にスタイルを適用することを可能にします。たとえば `li:has(ul)` はサブリストをを持つリストに、`h1:has(+ p)` は直後に段落を持つ見出しにマッチします。
* `text-indent` CSS プロパティで、値 `each-line` および `hanging` をサポートしました (Firefox bug 784648)。開発者は、特定のテキストインデントスタイルをより簡単に指定できます。また開発者はより創造的に、`text-indent` プロパティで複数の値を組み合わせることが可能になりました。例: `text-indent: 3em hanging each-line`
### JavaScript

* `Promise.withResolvers()` (en-US) 静的メソッドをサポートしました。これは戻り値の `Promise` と同じスコープで `resolve` および `reject` コールバック関数を公開して、Promise を構築した後に解決または拒否するコードを定義できます (Firefox bug 1845586)。
* `Date.parse()` が追加の日付形式をいくつか受け入れるようになりました。
    + `YYYY-MMM-DD` 形式で年が 9999 より大きい (例: `19999-Jan-01`) (Firefox bug 1858851)
    + `MMM-DD-YYYY` 形式 (例: `Jan-01-1970`) (Firefox bug 1863489)
    + ISO 形式でない日時でミリ秒 (例: `Jan 1 1970 10:00:00.050`) (Firefox bug 1863125)
    + 以前は拒否されていた、先頭に曜日がある形式。たとえば:
        - `Wed, 1970-01-01`
        - `Wed, 1970-Jan-01`曜日が正確である必要はありません。たとえば `foo 1970-01-01` は動作します (Firefox bug 1617562)。
* `Date.parse()` のその他の修正:
    + `YYYY-M-DD` および `YYYY-MM-D` 形式は、ISO 形式の日付 `YYYY-MM-DD` のように GMT であると想定しないようになりました (Firefox bug 1783731)。
    + すべての形式でミリ秒は四捨五入するのではなく、3 桁目より後を切り捨てるようになりました (Firefox bug 746529)。
### API

* `WebTransportSendStream` (en-US) インターフェイスの `sendOrder` (en-US) プロパティをサポートしました。WebTransport API (en-US) の *双方向* ストリームの相対的な送信優先度を、ストリームの作成後に取得および変更できます。このプロパティは一方向ストリームの優先度変更には使用できません。Firefox は一方向ストリームを `WebTransportSendStream` (en-US) ではなく `WritableStream` として実装しているためです (詳しくは Firefox bug 1853444 をご覧ください)。
### WebAssembly

* WebAssembly で、新たに `return_call` および `return_call_indirect` 命令が `call` (en-US) 命令をを置き換えることによって末尾呼び出し最適化をサポートしました。これはパフォーマンスの向上、スタック領域使用量の削減、末尾呼び出しを使用するプログラミング言語との互換性向上をもたらします。(Firefox bug 1858855).
### WebDriver conformance (WebDriver BiDi, Marionette)

#### WebDriver BiDi

* ブラウジングコンテキストが破棄されたときに発生する `browsingContext.contextDestroyed` イベントを追加しました (Firefox bug 1694390)。
* `script.callFunction` および `script.evaluate` コマンドの引数 `userActivation` をサポートしました。ユーザーアクションをエミュレートしている間に JavaScript を評価できます (Firefox bug 1845488)。
* `browsingContext.userPromptOpened` イベントの `defaultValue` フィールドをサポートしました。プロンプトの既定値をユーザーが取得できます (Firefox bug 1851761)。
* `browsingContext.captureScreenshot` コマンドの引数 `viewportOptions` を `boxOptions` に改名しました (Firefox bug 1859258)。
* `browsingContext.captureScreenshot` コマンドで引数 `origin` を採用して、`scrollIntoView` を削除しました (Firefox bug 1862649)。
* `browsingContext.captureScreenshot` コマンドで引数 `origin` をサポートしました。スクリーンショットの原点と範囲を定義できます。受け入れる値は `"document"` と `"viewport"` です (Firefox bug 1840999)。
* `Window` オブジェクトをシリアライズするとき、`Window` オブジェクトのコンテキスト ID を設定したプロパティ `context` が含まれるようになりました。これは特定のウィンドウやフレームを参照するために、Marionette との間で取り交わすことができます (Firefox bug 1841049)。
* データ構造 (配列やマップなど) へ入れ子になったノードのシリアライズが失敗する不具合を修正しました (Firefox bug 1861000)。
* `browsingContext.navigate` コマンドが誤ったナビゲーション ID を返す場合がある不具合を修正しました (Firefox bug 1861655)。

#### Marionette

* `Window` および `Frame` オブジェクトのシリアライズとデシリアライズをサポートしました (Firefox bug 1274251)。
実験的なウェブ機能
---------

以下の機能は Firefox 121 で新たに導入しましたが、デフォルトで無効です。これらを実験するには、`about:config` ページで適切な設定項目を検索して `true` に設定してください。実験的機能 のページで、さらに多くの機能を確認できます。

カスタム要素の状態の擬似クラス: `dom.element.customstateset.enabled`

カスタム要素は `states` (en-US) プロパティを通して、`CustomStateSet` (en-US) として内部状態を公開できます。`:--somestate` のような CSS のカスタム要素擬似クラスが、この要素の状態にマッチします。(Firefox bug 1861466)

HTML select 要素の `showPicker()` メソッド: `dom.select.showPicker.enabled`

`HTMLSelectElement.showPicker()` (en-US) メソッドはユーザー操作によって発生して、`<select>` 要素のブラウザーの選択ツールをプログラムから起動します。(Firefox bug 1854112)

アドオン開発者向けの変更点一覧
---------------

* manifest.json の `background` キーに `service_worker` および `scripts` 宣言が含まれているとき、バックグラウンドページが開始しない具合を修正しました (Firefox bug 1860304)。

> 
> 
> **注記:** ちなみに Chrome 121 の変更で、`service_worker` プロパティとともに指定した `scripts` プロパティが無視されます。以前、Chrome は両方のプロパティを持つ拡張機能の読み込みを拒否していました (Chromium bug 1418934)。
>  詳しくは `background` マニフェストキーのブラウザーサポート をご覧ください。
>  
> 
> 
>
過去のバージョン
--------

* Firefox 120 for developers
* Firefox 119 for developers
* Firefox 118 for developers
* Firefox 117 for developers
* Firefox 116 for developers
* Firefox 115 for developers
* Firefox 114 for developers
* Firefox 113 for developers
* Firefox 112 for developers
* Firefox 111 for developers
* Firefox 110 for developers
* Firefox 109 for developers
* Firefox 108 for developers
* Firefox 107 for developers
* Firefox 106 for developers
* Firefox 105 for developers
* Firefox 104 for developers
* Firefox 103 for developers
* Firefox 102 for developers
* Firefox 101 for developers
* Firefox 100 for developers
* Firefox 99 for developers
* Firefox 98 for developers
* Firefox 97 for developers
* Firefox 96 for developers
* Firefox 95 for developers
* Firefox 94 for developers
* Firefox 93 for developers
* Firefox 92 for developers
* Firefox 91 for developers
* Firefox 90 for developers