Cross-Origin resource policy
Cross-Origin-Resource-Policy レスポンス ヘッダー を使用すると、http サーバーは、返すリソースがクロスオリジンまたはクロスサイトで埋め込まれないようにブラウザに依頼することができます。これは、Cross-Origin Read Blocking(CORB)機能の補助機能で、CORB の対象にならないリソースの保護に特に便利です(CORB で保護できるのは、HTML、XML、JSON のみです)。
現在、
Cross-Origin-Resource-Policy
は、Spectre 攻撃や侵害されたレンダラーからイメージを守ることができる唯一の方法です。
CSS リダイレクトはクロスオリジン
仕様に準拠するため、(a)ネットワーク エラーにより読み込みに失敗したスタイルシート、(b)クロスオリジンから同じオリジンにリダイレクトされて戻ってきた後に読み込まれたスタイルシートは、
クロスオリジンと見なされます 。
WebContents が覆い隠されている場合、document.visibilityState を “hidden” に設定
Chromium の WebContents Occlusion 機能のおかげで、
Page Visibility API が
ウェブページの表示状態を厳密に反映 するようになります。ページが覆い隠されている場合も同様です。具体的には、ブラウザのタブやウィンドウが 1 つまたは複数のウィンドウに覆われている場合、document.visibilityState の値が “hidden” になります。
現時点で WebContents Occlusion 機能がサポートされているのは、Chrome OS と macOS のみです。Windows のサポートは、現在対応中です。
DOMMatrixReadOnly.scaleNonUniform()
scaleNonUniform()
関数は、現在の行列に対して右側から非均一スケール変換を乗算し、結果の行列を返します。従来の
SVGMatrix
との互換性を維持するため、再加算が行われています。非均一スケーリングとは、少なくとも 1 つのスケーリング要素が他と異なる変換を指します。非均一スケーリングを使うと、たとえば長方形を正方形や平行四辺形に変換できます。
EME 拡張: HDCP ポリシー チェック
アプリケーションは、最適なユーザー エクスペリエンスを実現する解像度で再生できるように、特定の
HDCP ポリシーの強制 が可能かを問い合わせることができるようになります。試してみたいデベロッパーの皆さんのために、
サンプルが公開されています 。
GamePad API: GamepadButton の touched 属性
GamePad API から
ゲームパッド ボタンの touched 状態 を取得できるようになりました。これは、ボタンが押されているかどうかとは別に、指がボタンの上にあるかどうかを示す属性です。
link rel=preload の imagesrcset 属性と imagesizes 属性
<link>
要素が
imagesrcset
プロパティと imagesizes
プロパティをサポートするようになりました。これらは、
HTMLImageElement
の
srcset
属性と
sizes
属性に対応するものです。 この機能を使う場合は、
<link>
要素に
preload
キーワードと
image
キーワードを含める必要があります。次に例を示します。
<link rel="preload" as="image" href="pic400.jpg" imagesizes="100vw"
imagesrcset="pic400.jpg 400w, pic800.jpg 800w, pic1600.jpg 1600w">
暗黙的なルート スクローラー
暗黙的なルート スクローラーを使うと、ビューポートを占めているスクローラー(iframe や div)で
ドキュメントレベルのスクロール (URL バーの表示や非表示、オーバースクロール時のグロー、回転の防止など)ができるようになります。この機能には API はないので、標準化の過程には含まれません。Chrome は、ページが主に非ドキュメント スクローラーに含まれているかどうかを判断して、ドキュメント スクロール UX をスクローラーに委譲しようと試みます。
これは、以前に提案された
rootScrollers API の暗黙版です。
Shadow host の ::part 疑似要素
Chrome の
shadow host で ::part()
疑似要素 がサポートされました。これにより、shadow host が shadow tree の一部の要素をページの外側に公開して、スタイルの設定に利用できるようになります。
PerformanceObserver.supportedEntryTypes
PerformanceObserver.supportedEntryTypes
を使うと、ウェブブラウザで実装されている PerformanceEntry のタイプの特徴を検出できます。たとえば、Chrome でこれを使用すると、次のような内容をコンソールに表示できます。
["longtask", "mark", "measure", "navigation", "paint", "resource"]
CSS および XSLT スタイルシートでレスポンス URL をベース URL として使用する
通常、ウェブの URL は、ドキュメントのベース URL からの相対パスで表されます。つまり、ページ
/hello/
に
<img src="world.jpg">
が含まれている場合、イメージは
/hello/world.jpg
から読み込まれます。
これにはいくつかの例外がありますが、最も一般的なのは CSS です。スタイルシートでは、背景画像などの URL はスタイルシートの「レスポンス URL」からの相対パスで表されます。
「レスポンス」という部分の違いは重要です。ページに
<link rel="stylesheet" href="/styles.css">
が含まれており、
/styles.css
が
/foo/styles.css
にリダイレクトされると、スタイルシート内の URL は
/foo/styles.css
からの相対パスになります。この場合、リクエスト URL とレスポンス URL は別になり、レスポンス URL がベース URL として使われます。
Service Worker が間に入ると、Chrome はこれをうまく処理できず、リクエスト URL を CSS のベース URL として使っていました。Chrome 73 ではこの問題が修正され、正しいレスポンス URL を使うようになります。
この変更は、以下のリソースタイプに適用されます。
XHR: responseURL とドキュメントにレスポンス URL を使用する
XHR の responseURL プロパティは、レスポンス URL を提供するものです。
多くの場合、リクエスト URL とレスポンス URL は同じですが、Service Worker は別の場所からのレスポンスを返すこともできます。また、リダイレクトが行われると、リクエスト URL とレスポンス URL は異なります。
Service Worker が XHR リクエストをインターセプトした場合、Chrome は誤って responseURL にリクエスト URL を設定していました。
Chrome 73 ではこの問題が修正され 、responseURL に正しいレスポンス URL が設定されるようになります。
WebRTC のアップデート
RTCConfiguration.offerExtmapAllowMixed
RTCConfiguration.offerExtmapAllowMixed()
に
Boolean 型プロパティが追加され 、セッション記述プロトコル(SDP)のオファーにおいて
extmap-allow-mixed
属性を有効にできるようになります。
SDP の
extmap-allow-mixed
属性は RFC8285 で定義されており、このプロパティを true に設定すると、この属性が SDP オファーに含まれるようになります。SDP の
extmap-allow-mixed
属性は Chrome 71 以降でサポートされますが、下位互換性の問題から、この属性はデフォルトで SDP オファーに含まれていませんでした。
このプロパティは、純粋に暫定的なものです。最初はデフォルトでオフになる予定ですが、クライアントによるコードの更新が十分に達成されたら、デフォルトでオンになるように変更したいと考えています。やがて下位互換性が必要なくなり、これを完全に削除できるようになることを期待しています。
RTCRtpReceiver.getParameters()
新しく追加された RTCRtpReceiver.getParameters()
メソッド は、
RTCRtpReceiver
オブジェクトのトラック デコーディング パラメータを返します。これには、通話のネゴシエーションに使われるコーデックや RTP ヘッダーリスト、RTCP 情報、レイヤー数が含まれています。
このメソッドは、
RTCRtpSender.getParameters()
に似ており、同じような通話情報を提供しますが、対象は受信側になります。通話のパラメータを変えることはできません。
RTCRtpReceiver.getSynchronizationSources()
新しく追加された RTCRtpReceiver.getSynchronizationSources()
メソッド は、音声および動画受信者の RTP パケットの直近の再生タイムスタンプを返します。これは、どのストリームがアクティブであるかをリアルタイムに判断する際に便利です。オーディオ メーターや、参加しているストリームのうちアクティブなものを優先して UI に表示したい場合などに利用できます。
RTCRtpContributingSource をインターフェースからディクショナリに変更
仕様では、
RTCRtpContributingSource
をディクショナリにすることが求められていますが、今まではインターフェースとなっていました。今回の変更で、
RTCRtpContributingSource
のプロトタイプはなくなり、
getContributingSources()
を呼び出すごとに新しいオブジェクトのセットが作られるようになります。
Atomics.wake() の名前が Atomics.notify() に変更
Atomics.wake()
メソッドの名前が
Atomics.notify() に変更されます 。これは、
Atomics.wait()
で停止していた Worker を復帰させるための低レベル関数です。これは、wait と wake という名前が似ていることによる混乱を緩和するための仕様変更に準拠する措置です。
変換リスト補間
Chrome は、
行列補間フォールバックが使われるケースを減らす ために、CSS 変換処理の方法を改善してきました。補間とは、中間的な変換を行うことを指します。CSS ルールを解釈する際、補間を行うために行列へのフォールバックが必要になる場合があり、それによってウェブ デベロッパーの意図しない視覚効果が引き起こされる可能性があります。この問題を軽減するため、そのような発生状況を減らすように仕様が変更されました。
相互運用性の改善
シャドウのぼかしの半径が仕様に準拠
従来より、Blink では CSS 仕様と Canvas2D 仕様の両方でぼかしの半径の解釈が異なっており、Blink のシャドウは
期待される範囲の約半分 しか覆っていません。
今回の変更により、仕様で定められているとおり、ガウスのぼかしのシグマが
ぼかしの半径の 1/2 として計算される ようになります。現在の Blink のシャドウ実装は、FireFox および Safari と一致します。
URL フラグメント識別子のアイソモーフィック デコードの削除
Chrome でフラグメント ID のある URL を開くと、
%xx
がデコードされて
アイソモーフィック デコード が適用され、その後、場合によってデコード結果の ID を持つ要素を探そうとします。たとえば、ユーザーが
example.com/#%F8%C0
を開くと、Chrome は以下の処理を行います。
ページで id="%F8%C0"
の要素を検索する
見つからなかった場合、ページで id="øÀ"
の要素を検索する
他のブラウザはこの処理を行っておらず、標準でも定義されていません。バージョン 73 以降では、
Chrome もこの処理を実行しなくなります 。
サポートの終了と機能の削除
WebSQL での EXPLAIN および REINDEX のサポートの削除
EXPLAIN
の出力は SQLite のバージョンをまたいで安定していることが保証されていないので、デベロッパーはこれを信頼することはできません。
REINDEX
が役立つのは照合順の定義が変わった場合のみですが、Chrome はビルトインの照合順しか使いません。これらの機能は、両方とも
削除されています 。
サンドボックス化された iframe での「ドライブバイ ダウンロード」のサポート終了
Chrome では、
サンドボックス化された iframe
でユーザーの操作なしに行われるダウンロード(「ドライブバイ ダウンロード」)が非推奨となっています。なお、この制限は、サンドボックス属性リストに allow-downloads-without-user-activation キーワードを含めることで解除することもできました。今回の変更により、コンテンツ プロバイダは悪意のあるダウンロードや不正なダウンロードを制限できます。
ダウンロードは、システムにセキュリティ脆弱性をもたらす場合があります。Chrome およびオペレーティング システムでは追加のセキュリティ チェックが行われますが、サンドボックス化された
iframe
でのダウンロードをブロックすることも、サンドボックスを支える一般的な考え方と一致するものと考えています。セキュリティの懸念は別としても、新しいページを開いたときに自動的にダウンロードが始まったり、クリック後に不自然にダウンロードが始まったりするよりは、同じページでクリックをトリガーとしてダウンロードする方が快適なユーザー エクスペリエンスとなるでしょう。
この機能の削除は、Chrome 74 で行われる予定です。
Reviewed by
Eiji Kitamura - Developer Relations Team
この記事は Chromium Blog の記事 "Chrome 73 Beta: Constructable stylesheets, a new RegExp function, and passive mouse events " を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
Chrome 73 はすでに安定版として公開されています。本記事は Chrome 73 がベータ公開された時点の内容です。
コンストラクタブル スタイルシート
動的なスタイルシートの作成は、<style> 要素の sheet プロパティに直接アタッチすることで、かなり前から実現できました。この手法には、スタイル設定前のコンテンツが一瞬表示される、CSS ルールの重複による肥大化が起きる場合があるなどの問題があります。CSSStyleSheet インターフェースの新しいメソッドを使うと、プログラムからスタイルシートを追加し、従来の手法の問題を解消できます。
コンストラクタブル スタイルシートを利用すると、共有 CSS スタイルを定義し、それを複数の shadow root またはドキュメント オブジェクトに適用できます。この操作を、アドプト(採用)と呼びます。共有スタイルシートを変更すると、それをアドプトしているすべての要素に適用されます。スタイルシートのアドプトは高速です。コンストラクタブル スタイルシートは、さまざまな事例で活用できます。たとえば、コンポーネントをまたいでテーマを共有する、DOM へのインジェクションを行わずにスタイルシートをプリロードする、などが考えられます。
新しい API を使わなくても、replace()
メソッドや replaceSync()
メソッドを使って命令的にスタイルシートを作成できます。次に例を示します。
const sheet = new CSSStyleSheet();
// replace all styles synchronously:
sheet.replaceSync('a { color: red; }');
// replace all styles, allowing external resources:
sheet.replace('@import url("styles.css")')
.then(sheet => {
console.log('Styles loaded successfully');
})
.catch(err => {
console.error('Failed to load:', err);
});
詳細については、こちらの記事 またはサンプル をご覧ください。
String.prototype.matchAll()
String.prototype
に、正規表現マッチングを行う新しいメソッドが追加されます。matchAll()
関数を使うと、String.prototype.match()
よりも厳密にマッチングできます。この新しい関数について理解するために、まずは次の正規表現コードについて考えてみましょう。
const regex = /t(e)(st(\d?))/g;
const string = 'test1test2';
string.match(regex)
を呼び出すと、完全一致のみを含む配列が返されます。この例では、'test1'
と 'test2'
になります。では、グループのキャプチャはどうなるでしょうか。g
フラグを削除すれば、'test1'
を対象とした最初のグループを取得することはできます。しかし、残りのグループを取得するには追加のコードを書かなければなりません。それは避けたいところです。
仕様策定者も同じ結論に至った ため、matchAll()
が生まれることになり、それが今回 Chrome で実装されています。matchAll()
は、前述のような一部の結果のみを返すのではなく、反復処理可能なオブジェクトを返します。また、いくつかの便利なプロパティも含まれています。
このメソッドの詳細については、developers.google.com の記事 をご覧ください。Chrome の JavaScript の新機能 については、v8.dev をご覧ください。
Passive Mousewheel リスナー
ユーザー エンゲージメントにとって、スクロールの反応は非常に重要です。そのため、Chrome のスクロール処理では、イベントの動作を通じた改善が続けられています。イベント リスナーのベスト プラクティスに、preventDefault()
を呼び出さないリスナーは passive として登録する必要がある(addEVentListener()
に {passive: true}
を渡す)というものがあります。passive でないイベントでは、ブロッキングが発生します。preventDefault()
が呼び出された場合、ブラウザはその処理を待たなければならないからです。
不要なブロッキングを行うイベント リスナーはよくあります。そのため、Chrome 56 では、ルート ターゲットに登録された touchstart
と touchmove
がデフォルトで passive になるように変更しました。これにより、リスナーでブロッキングが起きなくなり、ブラウザは安全にスクロールやズームを実行できるようになります。Chrome 73 以降では、wheel
イベント リスナーおよび mousewheel
イベント リスナーも同じ動作となります。つまり、次のコードは等価になります。
window.addEventListener("wheel", func);
window.addEventListener("wheel", func, {passive: true} );
変更に関する背景や統計値については、Making wheel scrolling fast by default をご覧ください。
今回のリリースに追加されたその他の機能
Cross-Origin resource policy
Cross-Origin-Resource-Policy レスポンス ヘッダー を使用すると、http サーバーは、返すリソースがクロスオリジンまたはクロスサイトで埋め込まれないようにブラウザに依頼することができます。これは、Cross-Origin Read Blocking(CORB)機能の補助機能で、CORB の対象にならないリソースの保護に特に便利です(CORB で保護できるのは、HTML、XML、JSON のみです)。
現在、Cross-Origin-Resource-Policy
は、Spectre 攻撃や侵害されたレンダラーからイメージを守ることができる唯一の方法です。
CSS リダイレクトはクロスオリジン
仕様に準拠するため、(a)ネットワーク エラーにより読み込みに失敗したスタイルシート、(b)クロスオリジンから同じオリジンにリダイレクトされて戻ってきた後に読み込まれたスタイルシートは、クロスオリジンと見なされます 。
WebContents が覆い隠されている場合、document.visibilityState を “hidden” に設定
Chromium の WebContents Occlusion 機能のおかげで、Page Visibility API がウェブページの表示状態を厳密に反映 するようになります。ページが覆い隠されている場合も同様です。具体的には、ブラウザのタブやウィンドウが 1 つまたは複数のウィンドウに覆われている場合、document.visibilityState の値が “hidden” になります。
現時点で WebContents Occlusion 機能がサポートされているのは、Chrome OS と macOS のみです。Windows のサポートは、現在対応中です。
DOMMatrixReadOnly.scaleNonUniform()
scaleNonUniform()
関数は、現在の行列に対して右側から非均一スケール変換を乗算し、結果の行列を返します。従来の SVGMatrix
との互換性を維持するため、再加算が行われています。非均一スケーリングとは、少なくとも 1 つのスケーリング要素が他と異なる変換を指します。非均一スケーリングを使うと、たとえば長方形を正方形や平行四辺形に変換できます。
EME 拡張: HDCP ポリシー チェック
アプリケーションは、最適なユーザー エクスペリエンスを実現する解像度で再生できるように、特定の HDCP ポリシーの強制 が可能かを問い合わせることができるようになります。試してみたいデベロッパーの皆さんのために、サンプルが公開されています 。
GamePad API: GamepadButton の touched 属性
GamePad API からゲームパッド ボタンの touched 状態 を取得できるようになりました。これは、ボタンが押されているかどうかとは別に、指がボタンの上にあるかどうかを示す属性です。
link rel=preload の imagesrcset 属性と imagesizes 属性
<link>
要素が imagesrcset
プロパティと imagesizes
プロパティをサポートするようになりました。これらは、HTMLImageElement
の srcset
属性と sizes
属性に対応するものです。 この機能を使う場合は、<link>
要素に preload
キーワードと image
キーワードを含める必要があります。次に例を示します。
<link rel="preload" as="image" href="pic400.jpg" imagesizes="100vw"
imagesrcset="pic400.jpg 400w, pic800.jpg 800w, pic1600.jpg 1600w">
暗黙的なルート スクローラー
暗黙的なルート スクローラーを使うと、ビューポートを占めているスクローラー(iframe や div)でドキュメントレベルのスクロール (URL バーの表示や非表示、オーバースクロール時のグロー、回転の防止など)ができるようになります。この機能には API はないので、標準化の過程には含まれません。Chrome は、ページが主に非ドキュメント スクローラーに含まれているかどうかを判断して、ドキュメント スクロール UX をスクローラーに委譲しようと試みます。
これは、以前に提案された rootScrollers API の暗黙版です。
Shadow host の ::part 疑似要素
Chrome の shadow host で ::part()
疑似要素 がサポートされました。これにより、shadow host が shadow tree の一部の要素をページの外側に公開して、スタイルの設定に利用できるようになります。
PerformanceObserver.supportedEntryTypes
PerformanceObserver.supportedEntryTypes
を使うと、ウェブブラウザで実装されている PerformanceEntry のタイプの特徴を検出できます。たとえば、Chrome でこれを使用すると、次のような内容をコンソールに表示できます。
["longtask", "mark", "measure", "navigation", "paint", "resource"]
CSS および XSLT スタイルシートでレスポンス URL をベース URL として使用する
通常、ウェブの URL は、ドキュメントのベース URL からの相対パスで表されます。つまり、ページ
/hello/
に
<img src="world.jpg">
が含まれている場合、イメージは
/hello/world.jpg
から読み込まれます。
これにはいくつかの例外がありますが、最も一般的なのは CSS です。スタイルシートでは、背景画像などの URL はスタイルシートの「レスポンス URL」からの相対パスで表されます。
「レスポンス」という部分の違いは重要です。ページに
<link rel="stylesheet" href="/styles.css">
が含まれており、
/styles.css
が
/foo/styles.css
にリダイレクトされると、スタイルシート内の URL は
/foo/styles.css
からの相対パスになります。この場合、リクエスト URL とレスポンス URL は別になり、レスポンス URL がベース URL として使われます。
Service Worker が間に入ると、Chrome はこれをうまく処理できず、リクエスト URL を CSS のベース URL として使っていました。Chrome 73 ではこの問題が修正され、正しいレスポンス URL を使うようになります。
この変更は、以下のリソースタイプに適用されます。
XHR: responseURL とドキュメントにレスポンス URL を使用する
XHR の responseURL プロパティは、レスポンス URL を提供するものです。
多くの場合、リクエスト URL とレスポンス URL は同じですが、Service Worker は別の場所からのレスポンスを返すこともできます。また、リダイレクトが行われると、リクエスト URL とレスポンス URL は異なります。
Service Worker が XHR リクエストをインターセプトした場合、Chrome は誤って responseURL にリクエスト URL を設定していました。
Chrome 73 ではこの問題が修正され 、responseURL に正しいレスポンス URL が設定されるようになります。
WebRTC のアップデート
RTCConfiguration.offerExtmapAllowMixed
RTCConfiguration.offerExtmapAllowMixed()
に Boolean 型プロパティが追加され 、セッション記述プロトコル(SDP)のオファーにおいて extmap-allow-mixed
属性を有効にできるようになります。
SDP の extmap-allow-mixed
属性は RFC8285 で定義されており、このプロパティを true に設定すると、この属性が SDP オファーに含まれるようになります。SDP の extmap-allow-mixed
属性は Chrome 71 以降でサポートされますが、下位互換性の問題から、この属性はデフォルトで SDP オファーに含まれていませんでした。
このプロパティは、純粋に暫定的なものです。最初はデフォルトでオフになる予定ですが、クライアントによるコードの更新が十分に達成されたら、デフォルトでオンになるように変更したいと考えています。やがて下位互換性が必要なくなり、これを完全に削除できるようになることを期待しています。
RTCRtpReceiver.getParameters()
新しく追加された RTCRtpReceiver.getParameters()
メソッド は、RTCRtpReceiver
オブジェクトのトラック デコーディング パラメータを返します。これには、通話のネゴシエーションに使われるコーデックや RTP ヘッダーリスト、RTCP 情報、レイヤー数が含まれています。
このメソッドは、RTCRtpSender.getParameters()
に似ており、同じような通話情報を提供しますが、対象は受信側になります。通話のパラメータを変えることはできません。
RTCRtpReceiver.getSynchronizationSources()
新しく追加された RTCRtpReceiver.getSynchronizationSources()
メソッド は、音声および動画受信者の RTP パケットの直近の再生タイムスタンプを返します。これは、どのストリームがアクティブであるかをリアルタイムに判断する際に便利です。オーディオ メーターや、参加しているストリームのうちアクティブなものを優先して UI に表示したい場合などに利用できます。
RTCRtpContributingSource をインターフェースからディクショナリに変更
仕様では、RTCRtpContributingSource
をディクショナリにすることが求められていますが、今まではインターフェースとなっていました。今回の変更で、RTCRtpContributingSource
のプロトタイプはなくなり 、getContributingSources()
を呼び出すごとに新しいオブジェクトのセットが作られるようになります。
Atomics.wake() の名前が Atomics.notify() に変更
Atomics.wake()
メソッドの名前が Atomics.notify() に変更されます 。これは、Atomics.wait()
で停止していた Worker を復帰させるための低レベル関数です。これは、wait と wake という名前が似ていることによる混乱を緩和するための仕様変更に準拠する措置です。
変換リスト補間
Chrome は、行列補間フォールバックが使われるケースを減らす ために、CSS 変換処理の方法を改善してきました。補間とは、中間的な変換を行うことを指します。CSS ルールを解釈する際、補間を行うために行列へのフォールバックが必要になる場合があり、それによってウェブ デベロッパーの意図しない視覚効果が引き起こされる可能性があります。この問題を軽減するため、そのような発生状況を減らすように仕様が変更されました。
相互運用性の改善
シャドウのぼかしの半径が仕様に準拠
従来より、Blink では CSS 仕様と Canvas2D 仕様の両方でぼかしの半径の解釈が異なっており、Blink のシャドウは期待される範囲の約半分 しか覆っていません。
今回の変更により、仕様で定められているとおり、ガウスのぼかしのシグマがぼかしの半径の 1/2 として計算される ようになります。現在の Blink のシャドウ実装は、FireFox および Safari と一致します。
URL フラグメント識別子のアイソモーフィック デコードの削除
Chrome でフラグメント ID のある URL を開くと、%xx
がデコードされてアイソモーフィック デコード が適用され、その後、場合によってデコード結果の ID を持つ要素を探そうとします。たとえば、ユーザーが example.com/#%F8%C0
を開くと、Chrome は以下の処理を行います。
ページで id="%F8%C0"
の要素を検索する
見つからなかった場合、ページで id="øÀ"
の要素を検索する
他のブラウザはこの処理を行っておらず、標準でも定義されていません。バージョン 73 以降では、Chrome もこの処理を実行しなくなります 。
サポートの終了と機能の削除
WebSQL での EXPLAIN および REINDEX のサポートの削除
EXPLAIN
の出力は SQLite のバージョンをまたいで安定していることが保証されていないので、デベロッパーはこれを信頼することはできません。REINDEX
が役立つのは照合順の定義が変わった場合のみですが、Chrome はビルトインの照合順しか使いません。これらの機能は、両方とも削除されています 。
サンドボックス化された iframe での「ドライブバイ ダウンロード」のサポート終了
Chrome では、サンドボックス化された iframe
でユーザーの操作なしに行われるダウンロード(「ドライブバイ ダウンロード」)が非推奨となっています。なお、この制限は、サンドボックス属性リストに allow-downloads-without-user-activation キーワードを含めることで解除することもできました。今回の変更により、コンテンツ プロバイダは悪意のあるダウンロードや不正なダウンロードを制限できます。
ダウンロードは、システムにセキュリティ脆弱性をもたらす場合があります。Chrome およびオペレーティング システムでは追加のセキュリティ チェックが行われますが、サンドボックス化された iframe
でのダウンロードをブロックすることも、サンドボックスを支える一般的な考え方と一致するものと考えています。セキュリティの懸念は別としても、新しいページを開いたときに自動的にダウンロードが始まったり、クリック後に不自然にダウンロードが始まったりするよりは、同じページでクリックをトリガーとしてダウンロードする方が快適なユーザー エクスペリエンスとなるでしょう。
この機能の削除は、Chrome 74 で行われる予定です。
Reviewed by Eiji Kitamura - Developer Relations Team