ホームページ > 記事 > ウェブフロントエンド > Internet Explorer 11 ブラウザの概要: IE とは呼ばないでください
この記事では主に Internet Explorer 11 ブラウザーの概要を紹介します。IE と呼ばないでください。困っている友達は参考にしてください。
先週、Microsoft は Windows 8.1 で Internet Explorer 11 の最初のプレビュー バージョンを正式にリリースしました。これで、この物議を醸した Web ブラウザの漏洩バージョンに関するさまざまな噂に終止符を打つ時が来ました。 WebGL、プリフェッチ、プリレンダー、フレックスボックス、ミューテーション オブザーバー、その他の Web 標準のサポートなど、Internet Explorer 11 に関するいくつかの重要な詳細がわかっています。おそらく IE11 でさらに興味深いのは、これが IE ではないということです。
久しぶりに、Microsoft は Internet Explorer ブラウザからいくつかの機能を削除しました。ユーザーエージェント文字列も変更されました。 Microsoft は独自のアプローチを放棄したようで、Internet Explorer 11 ブラウザーでは、JavaScript またはサーバー上で、IE を検出する既存のコード ブランチが false を返すようになりました。
ユーザー エージェントの変更点
以前のバージョンと比較して、Internet Explorer 11 のユーザー エージェント文字列は短くなり、いくつかの興味深い変更があります。
Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv 11.0) like Gecko
Windows 7 上の Internet Explorer 10 のユーザー エージェント文字列の場合
Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)
最も明らかな違いは、常に "MSIE" であることです。 Internet Explorer のユーザー エージェント文字列に存在する「」タグが削除されました。 user-agent の最後に「like Gecko」が追加されていることも注目に値します。これは、Internet Explorer 自体ではなく、Internet Explorer が Gecko ブラウザとして識別されることを示唆しています。 Safari は、誰でもユーザー エージェント文字列内の「Gecko」文字を嗅ぎ分けてブラウザが通過できるように、「Gecko のような」を追加した最初のブラウザです。
これで、「MSIE」を検索するスニッフィング コードは、新しいユーザー エージェント文字列では機能しなくなります。 「Trident」の文字を検索して IE であることを確認できます (「Trident」のロゴは Internet Explorer で導入されました)。 Internet Explorer の実際のバージョンは「rv」で識別されます。
さらに、ナビゲーター オブジェクトの情報も変更されており、使用されているブラウザーがさらに隠蔽されます。
navigator.appName は「Netscape」に設定されます
navigator.product は「Gecko」に設定されます
これは開発者を騙す卑劣な試みのように見えるかもしれませんが、実際には HTML5 で指定されています。 navigator.product 属性は「Gecko」である必要があり、navigator.appName も「Netscape」以上である必要があります。しかし、Internet Explorer 11 はこの奇妙なアドバイスに従っていません。
ナビゲーター情報の変更の副作用として、使用中の Javascript ロジックに基づくブラウザ検出が利用できなくなり、Internet Explorer 11 が Gecko ベースのブラウザとして認識される場合があります。
document.all とその仲間たち
IE4 以降、document.all は IE ブラウザーで全能です。以前に実装された document.getElementById() と同様に、document.all は DOM 要素への参照を取得する IE メソッドです。 IE5 から IE10 まで、document.all は DOM のサポートを維持します。ただし、11 では、この時代の遺産が false を返すように設定されています。つまり、コードが実際に document.all を使用して正常に動作する場合でも、IE11 では document.all に基づくコード分岐判断は失敗します。
もう 1 つのレガシーは、detachEvent() メソッドと同様に、イベント関数のattachEvent() を追加することです。このメソッドは IE11 から削除されました。これらのメソッドは、
function addEvent(element, type, handler) { if (element.attachEvent) { element.attachEvent("on" + type, handler); } else if (element.addEventListener) { element.addEventListener(type, handler, false); } }
もちろん、テストに最適なバージョンは、常に安定していて標準を満たしているバージョンであることをお勧めします。ある程度のレベルでは、attachEvent メソッドを削除しても不快感は生じません。ただし、インターネットには不十分な機能検出ロジック コードが散在しています。 AttachEvent メソッドを削除すると、上記の方法で記述されたコードはすべて、IE 固有のメソッドではなく標準バージョンを使用するようになります。
その他の削除された機能:
window.execScript() - eval() メソッドの IE バージョン
window.doScroll() - ウィンドウの IE バージョンスクロールメソッド
script.onreadystatechange - IE でロードされたスクリプトのステータス変化を監視
script.readyState - IE でのスクリプトロードのステータス
document.selection - IE
document.createStyleSheet で現在選択されているテキスト - IE でスタイル シート ドキュメントを作成します
style.styleSheet - IE ブラウザでスタイル シートを参照するスタイル オブジェクト
これらの IE ブラウザーの方法はすべて標準機能に置き換えられました。これらの機能とメソッドを削除した後も、標準機能の機能検出に基づくクロスブラウザー コードは変更せずに通常どおり実行できます。
結論
長い間、IE11 が最高の IE ブラウザーになる可能性があります。 Microsoft はついに過去の過ちをやり直す準備を整え、今日の標準に基づいたブラウザを組み込み始めています。古い機能を削除し、IE で認識されないユーザー エージェント文字列を変更することは、すべてのサイトが引き続き動作することを保証する独自のアプローチです。 Web アプリケーションがブラウザー スニッフィングの代わりに機能検出を使用する場合、コードは IE11 で実行される必要があります。ユーザー エージェント スニッフィングを使用するアプリケーションの場合でも、IE11 は優れた標準サポートを備えているため、ユーザーは完全に機能する Web サイトを表示できます。
IE ブランチコードのない未来がもうすぐやってくるので、一緒に楽しみにしましょう。
(2013-7-2 更新)、改訂で言及されている document.all は実際には削除されませんでしたが、falsy に変更されました
上記がこの章の全内容です。さらに関連するチュートリアルについては、JavaScript ビデオ チュートリアル をご覧ください。