ほぼすべてのバージョンの Chrome で、プロダクト、そのパフォーマンス、ウェブ プラットフォームの機能に多くの更新と改善が加えられています。
Chrome 50(ベータ版の予定日: 3 月 10 ~ 17 日)では、Chrome にいくつかの変更が加えられています。このリストは随時変更される可能性があります。
安全でないコンテキストでの AppCache のサポート終了
要約: クロスサイト スクリプティングを防止するため、安全でないオリジンでの AppCache のサポートを終了します。Chrome 52 では、HTTPS 経由でコンテンツを配信するオリジンでのみ機能することが想定されています。
削除の意向 | Chromestatus トラッカー | Chromium のバグ
AppCache は、オフラインでも常にオリジンにアクセスできるようにする機能です。これは、クロスサイト スクリプティング攻撃の強力な権限昇格です。安全でないオリジンの強力な機能を削除するという大規模な取り組みの一環として。
Chrome では、HTTPS 経由でのみ許可することで、この攻撃ベクトルを削除しています。HTTP サポートは Chrome 50 で非推奨になり、Chrome 52 で完全に削除される予定です。
Document.defaultCharset を削除
要約: document.defaultCharset
は、仕様への準拠性を高めるために削除されました。
削除の意向 | Chromestatus トラッカー | CRBug の問題
Chrome 49 で非推奨となった document.defaultCharset
は、地域の設定に基づいてユーザーのシステムのデフォルトの文字エンコードを返す読み取り専用のプロパティです。ブラウザが HTTP レスポンスまたはページに埋め込まれたメタタグ内の文字エンコード情報を使用しているため、この値を維持しても有用ではありません。
代わりに、document.characterSet
を使用して、HTTP ヘッダーで指定された最初の値を取得します。それが存在しない場合、<meta>
要素の charset
属性で指定された値(<meta
charset="utf-8">
など)が取得されます。最後に、これらのいずれも使用できない場合、document.characterSet
はユーザーのシステム設定になります。
これを明記しない理由について詳しくは、こちらの GitHub の問題をご覧ください。
リンク要素からサブリソース属性を削除
要約: HTMLLinkElement
の rel
属性の subresource
値のサポートを削除。
削除の意向 | Chromestatus トラッカー | Chromium のバグ
<link> の subresource
属性の目的は、ブラウザのアイドル時間中にリソースをプリフェッチすることでした。ブラウザはページをダウンロードした後、他のページなどのリソースをプリロードして、ユーザーがリクエストしたときにブラウザ キャッシュから簡単に取得できるようにしていました。
subresource
属性に複数の問題が発生しています。まず、この機能は意図したとおりに機能したことはありませんでした。参照されたリソースが低い優先度でダウンロードされた。この属性は、Chrome 以外のブラウザには実装されていません。Chrome の実装に、リソースが 2 回ダウンロードされるバグがありました。
コンテンツのプリロードによってユーザー エクスペリエンスを向上させるには、いくつかの方法があります。その中で最もカスタマイズしやすい方法は、プリキャッシュと Caches API を活用するサービス ワーカーを構築することです。その他の解決策としては、preconnect
、prefetch
、preload
、prerender
など、rel
属性の他の値があります。これらのオプションの一部は試験運用版であり、広範囲にサポートされていない場合があります。
安全でない TLS バージョンのフォールバックを削除
要約: 安全性の低いバージョンまたは安全でないバージョンの TLS を使用してサーバーにデータを返すように強制するメカニズムを削除。
削除の目的 | Chromestatus Tracker | Chromium バグ
Transport Layer Security(TLS)は、バージョンのネゴシエーション メカニズムをサポートしているため、互換性を損なうことなく新しい TLS バージョンを導入できます。一部のサーバーでは、ブラウザがフォールバックとして安全でないエンドポイントを使用する必要が生じる形でこれを実装していました。このため、攻撃者は、構成が正しくないウェブサイトだけでなく、すべてのウェブサイトで、より弱いバージョンの TLS をネゴシエートするように強制できます。
影響を受けるサイトは ERR_SSL_FALLBACK_BEYOND_MINIMUM_VERSION
に接続できなくなります。管理者は、サーバー ソフトウェアが最新の状態であることを確認する必要があります。それでも問題が解決しない場合は、サーバー ソフトウェア ベンダーに連絡して、修正が利用可能かどうかを確認します。
KeyboardEvent.prototype.keyLocation を削除
要約: Keyboard.prototype.location
属性の不要なエイリアスを削除します。
削除の意向 | Chromestatus トラッカー | Chromium のバグ
この属性は、Keyboard.prototype.location
属性のエイリアスです。これにより、キーボード上の複数の場所にあるキーを区別できます。たとえば、拡張キーボードでは両方の属性を使用することで、2 つの Enter
キーを区別できます。
RTCPeerConnection メソッドで必要なエラー ハンドラと成功ハンドラ
要約: WebRTC の RTCPeerConnection メソッド createOffer()
と createAnswer()
には、成功ハンドラに加えてエラーハンドラも必要になります。これまでは、成功ハンドラのみを使用してこれらのメソッドを呼び出すことができました。この使用は非推奨になりました。
削除の意向 | Chromestatus トラッカー | Chromium のバグ
Chrome 49 では、エラー ハンドラを指定しないで setLocalDescription()
または setRemoteDescription()
を呼び出す場合に警告を追加しました。Chrome 50 では、エラーハンドラ引数は必須です。
これは、WebRTC 仕様で要求されているように、これらのメソッドにプロミスを導入するための準備の一環です。
以下は、WebRTC の RTCPeerConnection デモの例です(main.js、行 126)。
function onCreateOfferSuccess(desc) {
pc1.setLocalDescription(desc, function() {
onSetLocalSuccess(pc1);
}, onSetSessionDescriptionError);
pc2.setRemoteDescription(desc, function() {
onSetRemoteSuccess(pc2);
}, onSetSessionDescriptionError);
pc2.createAnswer(onCreateAnswerSuccess, onCreateSessionDescriptionError);
}
setLocalDescription()
と setRemoteDescription()
の両方にエラー ハンドラがあることに注意してください。成功ハンドラのみを想定している古いブラウザでは、エラー ハンドラ引数がある場合でも無視されます。古いブラウザでこのコードを呼び出しても例外は発生しません。
一般に、本番環境の WebRTC アプリケーションでは、仕様の変更や接頭辞の違いからアプリを保護するために、WebRTC プロジェクトによって管理されている shim である adapter.js
を使用することをおすすめします。
XMLHttpRequestProgressEvent のサポート終了
要約: XMLHttpRequestProgressEvent
インターフェースと、position
属性と totalSize
属性が削除されます。
削除の意向 | Chromestatus トラッカー | Chromium のバグ
このイベントは、Gecko 互換性プロパティ position
と totalSize
をサポートするために存在していました。これら 3 つのサポートは Mozilla 22 で廃止され、この機能は ProgressEvent
に長い間置き換えられています。
var progressBar = document.getElementById("p"),
client = new XMLHttpRequest()
client.open("GET", "magical-unicorns")
client.onprogress = function(pe) {
if(pe.lengthComputable) {
progressBar.max = pe.total
progressBar.value = pe.loaded
}
}
接頭辞付きの Encrypted Media Extensions を削除
要約: プレフィックス付きの Encrypted Media Extension は削除され、スペックベースのプレフィックスなしの置き換えが使用されるようになりました。
削除の意向 | Chromestatus トラッカー | Chromium のバグ
Chrome 42 では、プレフィックスのない Encrypted Media Extension の仕様ベースのバージョンがリリースされました。この API は、HTMLMediaElement
で使用するためにデジタル著作権管理システムを検出して選択し、操作するために使用されます。
それから 1 年近く経ちます。接頭辞のないバージョンには接頭辞付きバージョンよりも多くの機能があるため、API の接頭辞付きバージョンを削除する時期です。
SVGElement.offset プロパティのサポートを削除
要約: SVGElement のオフセット プロパティは削除され、HTMLElement
でより広くサポートされているプロパティに置き換えられました。
削除の意向 | Chromestatus トラッカー | Chromium のバグ
オフセット プロパティは長い間、HTMLElement
と SVGElement
の両方でサポートされていましたが、Gecko と Edge では HTMLElement
でのみサポートされています。ブラウザ間の一貫性を改善するため、これらのプロパティは Chrome 48 で非推奨になり、現在削除されています。
同等のプロパティが HTMLElement
に含まれていますが、代替機能をお探しのデベロッパーは getBoundingClientRect()
も使用できます。