const yesBtn = document.getElementById("yes");
const noBtn = document.getElementById("no");
const popover = document.getElementById("popover");
const output = document.getElementById("output");
if (yesBtn.command === undefined) {
output.textContent = "Popover control command attribute not supported.";
} else {
popover.addEventListener("toggle", (event) => {
if (event.source === undefined) {
output.textContent = "ToggleEvent.source not supported.";
} else if (event.source === yesBtn) {
output.textContent = "Cookie set!";
} else if (event.source === noBtn) {
output.textContent = "No cookie set.";
}
});
}
◆JavaScript:ビュー遷移完了のPromiseのタイミングを変更
これまで、ビュー遷移が終了する際にPromiseが返されるタイミングはレンダリングライフサイクルのステップ内にありました。そのため、Promiseを受けたコードが実行されるタイミングは、ビュー遷移を削除するビジュアルフレームが生成された後になっていました。これにより、アニメーションの最後にちらつきが発生する可能性がありました。今回の変更に伴い、ビュー遷移のクリーンアップ手順が全ての処理が完了した後に非同期で実行されるようになりました。これにより、ちらつきの発生が解消することが期待されます。
◆JavaScript:Uint8Arrayからbase64や16進数への変換をサポート
Base64は、任意のバイナリデータをASCIIとして表現する一般的な方法ですが、JavaScriptにはバイナリデータを扱うためのUint8Arrayクラスが用意されているものの、Uint8Arrayのデータをbase64としてエンコードしたり、base64データを受け取って対応するUint8Arrayを生成したりする組み込みメカニズムは用意されていませんでした。今回の更新から、これらをサポートするメソッドが追加されます。
・Uint8Array.prototype.setFromBase64():base64エンコードされた文字列から取得したバイト列をUint8Arrayオブジェクトに格納
・Uint8Array.prototype.setFromHex():16進エンコードされた文字列から取得取得したバイト列をUint8Arrayオブジェクトに格納
・Uint8Array.prototype.toBase64():Uint8Arrayオブジェクトのデータに基づいて、base64エンコードされた文字列を返す
・Uint8Array.prototype.toHex():Uint8Arrayオブジェクトのデータに基づいて、16進エンコードされた文字列を返す
const uint8Array = new Uint8Array(16);
const result = uint8Array.setFromBase64("PGI+ TURO PC9i Pg==");
console.log(result);
// { read: 19, written: 10 }
console.log(uint8Array);
// Uint8Array(16) [60, 98, 62, 77, 68, 78, 60, 47, 98, 62, 0, 0, 0, 0, 0, 0]
◆ウェブAPI:ReadableStreamBYOBReader minオプション
既存のReadableStreamBYOBReader.read()メソッドにminオプションが追加されます。このメソッドは、データを読み取るArrayBufferViewを受け入れるものの、読み取りが解決される前に書き込まれる要素の数を保証していません。そこで、minオプションを指定することにより、ストリームが少なくともその数の要素を使用可能になるまで、読み取りを解決する前に待機するように要求できます。これにより、ビューが保持できる要素よりも少ない要素で読み取りが解決される可能性がある、現在の動作が改善されます。
◆HTTP Cookieのプレフィックス
状況によっては、サーバーサイドで設定されたCookieとクライアントによって設定されたCookieを区別することが重要になる場合があります。例えば、通常サーバーによって設定されるはずのCookieが、XSSエクスプロイトなどの予期しないコードにより、クライアントで設定される可能性が考えられます。今回の更新では、Cookieがいずれによって設定されたのかを識別するシグナルが追加されました。具体的には、__Httpおよび__HostHttpプレフィックスを定義し、サーバーが設定したCookie名にプレフィックスを付けることで、そのCookieがスクリプトによってクライアント側で設定されたものではないことを認識できるようにします。
◆ローカルネットワークへのアクセス制限
ユーザーのローカルネットワークに対するリクエストの送信機能が制限され、このようなリクエストが発生した場合に権限を求めるプロンプトが表示されるようになります。対象となるのはパブリックウェブサイトからローカルIPアドレスやループバックへのリクエスト、およびローカルウェブサイト(イントラネットなど)からループバックへのリクエストです。この変更の目的は、ルーターなどのローカルネットワークデバイスに対するクロスサイトリクエストフォージェリ(CSRF)攻撃のリスクを軽減し、外部サイトにこれらのリクエストが悪用されることによりローカルネットワークのフィンガープリントを奪取される危険性を排除することにあります。
◆IWA:Controlled Frame APIの導入
独立したウェブアプリ(IWA)でのみ使用できるControlled Frame APIが追加されます。他のプラットフォームの同様の名前のAPIと同様に、Controlled Frameでは、
controlled-frame/test_app at main · WICG/controlled-frame · GitHub
https://github.com/WICG/controlled-frame/tree/main/test_app
◆非推奨化:特定の要素内にある
HTMLの仕様には、
◆非推奨化:プリフェッチと事前レンダリングからのPurpose: prefetchヘッダーの送信を停止
プリフェッチと事前レンダリングでSec-Purposeヘッダーが使用されるようになったため、Purpose: prefetchヘッダーは削除されることとなりました。
◆その他の更新
・CSS:caret-animationプロパティ
・SharedWorkerスクリプトがblobスクリプトURLのコントローラを継承可能に
・ServiceWorkerStaticRouterTimingInfoを追加
・Get Installed Related Apps API(navigator.getInstalledRelatedApps)のデスクトップ版サポート
◆オリジントライアル
・JavaScript:clipboardchangeイベントの追加
・Crash Reporting:Key-Value APIの導入
・PWA:着信通知の有効化
・SharedWorker:Androidで有効化
また、Google Chrome 140には多数のセキュリティバグフィックスが含まれています。
なお、次期安定版の「Google Chrome 141」は現地時間の2025年9月30日(火)にリリース予定です。
この記事のタイトルとURLをコピーする
ソース元はコチラ
この記事は役に立ちましたか?
もし参考になりましたら、下記のボタンで教えてください。