
以下は、優れたコンピューターマガジンC`tでの掲載を許可された私の記事のオリジナルです。残念ながら、市場で生き残っておらず、非常に低い状態にあります。 問題が表示されなくなったため、この記事は公開されませんでした。 したがって、私はそれをHabréで公開することに決めました。
この記事は膨大な量であり、一部の情報はすでにHabréで公開されていることをすぐにお知らせします。 この記事の目的は、Internet Explorerの新しいバージョンに関する最大量の情報を組み合わせて、許容可能な量で提示することです。
コメントでは、コメントと修正を受け入れます。
はじめに
Internet Explorerの歴史は1995年に遡り、Microsoftは今年8月にSpyglass、Inc.からライセンスを受けてリリースしました。 それから10年以上が経過し、Internet Explorerは大多数のユーザーを獲得して世界を征服し、そのバージョンは8番に変更されようとしています。
広く使用されているにもかかわらず、Internet ExplorerはWebプロジェクトの開発者に悪名高い。 これは多くの要因によるものであり、主な理由は、W3Cコンソーシアム標準の実装が遅いことと、ユーザー間の新しいバージョンへの移行が非常に遅いことです。 膨大な数のユーザーがまだ古いブラウザーを使用しているという事実により、Web開発者はそれらをサポートし、あらゆる種類のトリックやいわゆるハッキングをコードに組み込んで、同じサイトがFirefox、Safari、Operaブラウザーと同じように見えるようにしなければなりません、およびInternet Explorerのすべての一般的なバージョン。
ただし、ブラウザーの8番目のバージョンのリリースにより、Microsoftは開発者の子孫に対する態度を平準化する試みを行っているようで、古いバージョン用に作成された以前のコードのサポートを残さずに、待望の標準のサポートを提供しています。
この記事は、開発者向けのInternet Explorer 8の新機能、変更点、およびこのブラウザーが提供する新しい便利な機能の使用方法を示すことを目的としています。
プログラマー向けInternet Explorerの歴史
1995年に登場したIEの最初のバージョンは、SSL、Cookie、VRMLやRSAなどのサポートを含む2番目のバージョンと同様、広く使用されていませんでした。 1996年にリリースされた3番目のバージョンは、なんとか達成できました。 彼女は、CSS、ActiveX、フレーム、およびJavaアプレットのサポートを受けました。 4番目のバージョンでは、DHTMLとPNGが登場しました。 5番目のバージョンでは、XML / XSLTのサポート、CSSバージョン1および2、ファビコン、HTMLアプリケーションのサポートが改善されました。 XMLHttpRequestの導入は、ユビキタスAJAXテクノロジーを後ほど開始するものであり、特に有用です。 6番目のバージョンは、DHTMLのサポートの改善、CSSレベル1、DOMレベル1およびSMIL 2.0の部分的なサポートの革新により、寛大さを失いました。 ただし、6番目のバージョンは、セキュリティの面で最も脆弱なブラウザのバージョンになったようです。 Internet Explorerの7番目のバージョンでは、IDNサポートが追加され、CSS、DOMおよびHTMLのサポートがわずかに改善され、Gzipおよびdeflateによるページ圧縮のサポートが改善されました。 ただし、主要な修正の1つは、PNGファイルの透明性に対する待望のサポートでした。
第8バージョン
Internet Explorer 8の最初のパブリックベータは、2008年3月に登場しました。 新しいバージョンは、一から書き直されたレンダリングエンジンを受け取り、開発チームは、以前のバージョンの多くのエラーを修正するCSS 2.1、CSS 3、HTML 5などの標準をサポートすることを目指していると報告されました。 そして、期待が叶いました。新しいバージョンには、abbrタグの導入、自動生成されたCSSコンテンツのサポート、CSS表示ルール:テーブル、ページングされたメディア、DOMストレージ、XDM、セレクターAPIなど、HTMLとCSSの多数の変更が含まれていました。 さらに、データのサポートがありました:クロスドメイン交換のためのURIとXDomainRequest、新しい機能がDOMに追加され、ARIA仕様のサポートが発表されました。
新しいバージョンとその革新に精通した後、MicrosoftはついにWeb開発者に注意を向け、ブラウザをより良くするために徹底的に作り直したようです。
8番目のバージョンのメカニズム。 7番目のバージョンを装って
Internet Explorerレンダリングの新しいバージョンは、次の3つのモードで機能します。
- Quirks and Strict-DOCTYPE quirksモードに応じてIE7のように動作します;
- 標準-最も広く実装されている標準であるIE 8のメインモード。
開発チームは、古いページまたは新しいページの特定のモードの強制サポートを提供しました。これは、以前のバージョンのブラウザーでの表示を目的としており、通常バージョン8で表示されるはずです。
必要なモードを設定するには、次のコンテンツを含むページにメタタグを追加する必要があります。
< meta http-equiv ="X-UA-Compatible" content ="IE=8" />
ここで、コンテンツ-ページが表示されるモードを示します。 コンテンツの主な値は次のとおりです。
- "IE = 7"-すべてのページがレンダリングされる厳密モードをオンにします。
- 「IE = EmulateIE7」-DOCTYPEに応じて、標準レンダリングモード(厳密)または互換モード(Quirks)のいずれかが使用されるIE7互換モードが含まれます。
- 「IE = EmulateIE8」-互換表示モードがユーザーのブラウザーで有効になっているかどうかに関係なく、ページは強制的に「IE8標準」モードになり、QuirksモードでQuirksページが表示されます。
- 「IE = 8」-「IE8標準」の標準に最大限準拠するモードがオンになります。
さらに、コンテンツ値はこれらのモードに限定されません。 したがって、他のブラウザの値を指定できます。
< meta http-equiv ="X-UA-Compatible" content ="FF=3" />
これに加えて、コンテンツパラメータの値は「edge」であり、ブラウザの最も古いバージョンのサポートを示すことができます。
< meta http-equiv ="X-UA-Compatible" content ="IE=edge" />
「メタ」タグの指定に加えて、ブラウザモードを制御する別の方法があります-これはhttp-headerの転送です。
X-UA互換:IE = EmulateIE7
セキュリティメカニズム
DEP / NXによるメモリ保護
「メモリ保護を有効にしてインターネットからの攻撃のリスクを減らす」機能は、ブラウザの第7バージョンでも使用できますが、デフォルトでは有効になっていません。 確かに、この関数は64ビットプラットフォームでは使用できませんが、64ビットバージョンのWindowsのすべてのプロセスがDEPによって保護されているためです。 これで、この機能はデフォルトで有効になります。 DEP / NXを使用すると、データとしてマークされたコードの実行を防ぐことができます。 したがって、バッファオーバーフローなどの攻撃の層全体が遮断されます。
ActiveXの機能強化
Internet Explorerの8番目のバージョンでは、ActiveXコントロールは特定のユーザー(ユーザーごとのActiveX)にのみインストールできます。これにより、ユーザーが管理者権限で作業しないため、感染のリスクが軽減されます。 この場合、攻撃を受けているのは1人のユーザーのプロファイルのみであり、それ以上はありません。
サイトごとのActiveXは、ActiveX要素を1つの(独自の)サイトのみで実行し、他のサイトでは実行しないように設定できる新しい手法です。 ユーザーは、最初に必要なサーバーでのみ、たとえばSilverlightの使用を許可することもできます。 他のすべてと同様に、ActiveXインストールメカニズムの管理は、グループポリシーを通じて管理者が利用できます。
XSSフィルター
私の意見では、最も興味深いのは、組み込みのXSSフィルターです。これにより、「クロスサイトスクリプティング」攻撃からユーザーを保護できます。 XSS攻撃による脅威の大きさを少なくともおおよそ評価するには、XSSed.comにアクセスして、最小の公共リソースではなく、これらの攻撃の影響を受けやすいものを確認します。 これらのリソースにアクセスするだけで、あらゆるユーザーが被害者になる可能性があり、現在ではこのような「漏れやすい」サイトの数は2万を超えています。
XSSフィルターInternet Explorer 8は、いわゆるXSS攻撃に対するものです。 Type1タイプ。 ウィキペディアによると、このタイプの攻撃は最も一般的です。
何らかの理由でユーザーがリソースのXSSに対する保護を有効にできないようにするサイトでは、HTTPヘッダーでオプションを使用できます。
X-XSS-保護:0
プロジェクトでXSS攻撃に似た手法を使用した人に必要な場合があります。
その他のセキュリティの変更
- 新しいtoStaticHTML関数が追加されました。これにより、htmlタグをフォーマットすることでページに危険なコードが挿入されるのを回避できます。この関数は、Microsoft Anti-Cross Site Scripting Libraryの関数と同じです。
- Internet Explorer 8は、JSONを操作するためのECMAScript 3.1機能を実装しています。 セキュリティを確保するために、JSONを操作するオブジェクトには解析関数が含まれています。これは、toStaticHTMLと同様に、潜在的に危険なテキストを確実にフォーマットします。
- Internet Explorerの新しいバージョンでは、ブラウザにはいわゆる MIMEスニッフィングメカニズム。 この機能により、ブラウザはページのコンテンツを「コンテンツタイプ」ではなく、コンテンツによって判断できます。 多くの場合、このような定義により、危険なコードの導入が許可されました。 これで、たとえば、「content-type:image / *」では、埋め込まれたhtmlまたはスクリプトコードはレンダリングされません。 フィルターを管理するために、開発者は新しい信頼できるパラメーターを使用して、「Content-Type:text / plain; authoritative = true;”この場合、IE8は、「Content-Type」で指示されたとおりにコンテンツを表示することにより、コンテンツのタイプを判断しようとしません。
- HTTPヘッダーの新しいパラメーターX-Download-Options:noopenおよびContent-Disposition:attachment; filename = untrustedfile.htmlを使用すると、ブラウザにコンテンツを表示する代わりに保存するように強制できます。 これは、Webアプリケーションが安全でないコンテンツを含むページをユーザーに転送する必要がある場合に必要になることがあります。 クライアントに保存してから開くと、そのようなページはサーバーのコンテキストでは機能せず、安全なままになります。
- ファイルアップロードコントロールでは、セキュリティ上の理由により、入力フィールドのステータスが読み取り専用に変更されました。 これに加えて、同じ目的で、IE8はファイルのフルパスを送信しなくなり、代わりにその名前のみが送信されます。
CSSの変更
CCS式
CSSサポートに関するInternet Explorer開発チームの基本的な決定の1つは、いわゆるCCS式の拒否です。 これらの式を使用すると、JavaScript式をCSSコードに統合して、cssパラメーターのコンテンツを操作できます。 Internet Explorer 8のCSS式はデフォルトで無効になります。 生産性の面でセキュリティと高コストという名前の理由の中で。 ただし、CSS式のサポートはStrictおよびQuirks互換モードのままであり、既に記述されたコードをサポートします。
プロパティの命名の変更
Microsoftは、一部のCSSプロパティの命名規則を変更しました。 これで、すべての「非標準プロパティ」に接頭辞「-ms-」が付きます。 IE 8のCSS 2.1に完全に準拠するために、このようなプレフィックスは次の条件に適したプロパティを受け取りました。
- プロパティがMicrosoft拡張機能である場合(仕様またはCSSモジュールで定義されていない)。
- プロパティが、W3Cから勧告候補ステータスを受け取っていないCSS仕様またはモジュールの一部である場合。
- プロパティがCSS仕様で定義されたプロパティを部分的にのみ実装する場合。
接頭辞「-ms-」を受け取ったプロパティのリストを以下に示します(理由付き):
物件 | 種類 | W3cステータス |
-ms- アクセラレーター | 延長 | |
-ms- background-position-x | CSS3 | ワーキングドラフト |
-ms- バックグラウンド位置y | CSS3 | ワーキングドラフト |
-ms- 動作 | 延長 | |
-ms- ブロック進行 | CSS3 | 編集者の下書き |
-ms- フィルター | 延長 | |
-ms- ime-mode | 延長 | |
-ms- レイアウトグリッド | CSS3 | 編集者の下書き |
-ms- layout-grid-char | CSS3 | 編集者の下書き |
-ms- レイアウトグリッド線 | CSS3 | 編集者の下書き |
-ms- レイアウトグリッドモード | CSS3 | 編集者の下書き |
-ms- レイアウトグリッドタイプ | CSS3 | 編集者の下書き |
-ms- 改行 | CSS3 | ワーキングドラフト |
-ms- ライングリッドモード | CSS3 | 編集者の下書き |
-ms- 補間モード | 延長 | |
-ms- オーバーフロー-x | CSS3 | ワーキングドラフト |
-ms- オーバーフロー-y | CSS3 | ワーキングドラフト |
-ms- scrollbar -3dlight-color | 延長 | |
-ms- スクロールバーの矢印の色 | 延長 | |
-ms- スクロールバーベースカラー | 延長 | |
-ms- scrollbar -darkshadow-color | 延長 | |
-ms- スクロールバーの顔の色 | 延長 | |
-ms- スクロールバーのハイライト色 | 延長 | |
-ms- スクロールバーの影の色 | 延長 | |
-ms- スクロールバートラックカラー | 延長 | |
-ms- text-align-last | CSS3 | ワーキングドラフト |
-ms- テキスト自動スペース | CSS3 | ワーキングドラフト |
-ms- テキスト調整 | CSS3 | ワーキングドラフト |
-ms- text-kashida-space | CSS3 | ワーキングドラフト |
-ms- テキストオーバーフロー | CSS3 | ワーキングドラフト |
-ms- テキスト下線位置 | 延長 | |
-ms- 単語区切り | CSS3 | ワーキングドラフト |
-ms- ワードラップ | CSS3 | ワーキングドラフト |
-ms- 書き込みモード | CSS3 | 編集者の下書き |
-ms- ズーム | 延長 | |
開発者は、多くのサイトで古い値を新しい値に変換する必要があることを理解しているため、古い値は廃止と見なされますが、互換性のために8番目のバージョンでサポートされます。 IE 8用の新しいコードを開発するときは、新しい命名規則のみを使用する必要があります。
フィルターのプロパティ
変更はフィルターのようなプロパティに影響しました。 以前は、残念ながら、フィルター構文はCSS 2.1と一致しませんでした。 たとえば、示されたコードでは、コンマは無効と見なされました。
filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80, FinishOpacity=70, Style=2);
ブラウザの新しいバージョンでは、フィルター構文はCSS仕様に合わせられています。
-ms-filter: «progid:DXImageTransform.Microsoft.Alpha(Opacity=80, FinishOpacity=70, Style=2)»;
新しい構文では、プロパティ値が引用されていることが簡単にわかります。
CSS 2.1サポート
CSS 2.1のより完全な実装のために、次の擬似クラスのサポートが追加されました。
- :アクティブ(部分的なサポートの代わりに、完全になります)
- :フォーカス
- :lang©
- @ページ:最初
- @ページ:左
- @ページ:右
最後の3つはbeta2では使用できませんが、最終バージョンに追加されます。 さらに、次の擬似要素のサポートが追加されました。
次の要素は、部分的なサポートの代わりに完全にサポートされるか、追加されます。
- リストスタイルタイプ
- バックグラウンド位置
- フォントの太さ
- ホワイトスペース
- 単語間隔
- 内容
- カウンターインクリメント
- カウンターリセット
- 引用符
- ボーダー崩壊
- ボーダー間隔
- ボーダースタイル
- キャプション側
- 空のセル
- 下
- 展示する
- 左
- そうだね
- トップ
- z-index
- 孤児
- 改ページ
- 未亡人
- アウトライン
- アウトラインカラー
- アウトラインスタイル
- アウトライン幅
- ボックスサイズ(CSS 3要素)
CSS関数
url()関数の既存のサポートに加えて、8番目のバージョンでは、counter()とattr()の2つの関数のサポートが追加されます。
IE8のJavaScriptとAJAX
プログラマを支援するために、Internet Explorer開発チームはJavaScriptエンジンに大幅な変更と革新を加えました。
XDomainRequest(XDR)
XDRはXMLHttpRequestに似た新しいオブジェクトですが、ドメイン間で情報を交換するように設計されています。 XDR構文は、クロスサイトリクエストのW3Cドラフトアクセス制御に従います。
クロスドキュメントメッセージング(XDM)
XDMは、同じページにある異なるドメインのフレームにテキストフレームを送信できるようにする別の技術です。 このような交換は、HTML5 postMessageメソッドを介して行われます。
var testframe = document .getElementsByTagName( 'iframe' )[0];
testframe.contentWindow.postMessage( '!' );
このようなメッセージを受信するには、フレーム内のドキュメントで「onmessage」メッセージハンドラを登録する必要があります。
document .attachEvent( 'onmessage' , function (e) {
…
});
DOMストレージ
DOMストレージは、Cookieメカニズムに頼らずにクライアント側にデータを保存できるメカニズムです。 Cookieとは異なり、DOMストレージには多くの制限がありません:格納されるデータのサイズは大幅に増加し、DOMストレージデータはリクエストごとにサーバーに送信されません。また、DOMストレージに格納されている情報を他のウィンドウに表示する方法を制御することもできます。
Internet Explorerは、DOMストレージを操作するための3つのオブジェクトを実装しています。
- window.sessionStorage-ブラウザタブの期間中データを保存するように設計されており、タブコンテキストが有効な間、異なるページからデータを利用できます。 例外が発生した場合、またはブラウザーが閉じられた場合、データは復元されません。
- window.localStorage-各ドメインおよびサブドメインのデータ(約10 MB)の長期保存用に設計されていますが、ドメインおよびサブドメインは相互のデータを受信できますが、サブドメインは別のサブドメインからデータを受信できません。
- ストレージオブジェクト-sessionStorage操作とlocalStorage操作の両方のロジックを実装し、必要なメソッド、プロパティ、イベントを含みます。
以下は、DOMストレージの操作方法の簡単な例です。
localStorage.setItem( "name" , "" );
…
var name = localStorage.getItem( "name" );
XMLHttpRequest
XMLHttpRequestは、ホストが応答を待機するミリ秒数を設定できる新しいタイムアウトプロパティを受け取りました。その後、ontimeoutイベントが発生します。
var xhr = new XMLHttpRequest();
xhr.timeout = 10000;
xhr.ontimeout = onTimeout;
…
function onTimeout ()
{
alert( "timeout!" );
}
新機能
Internet Explorer 8のJavaScriptにもいくつかの機能が追加されました。
- ToStaticHTML-ソース文字列をフォーマットして、タグ付き行を安全な行に置き換えてXSS攻撃を防ぎます。
- toJSON、JSON.parse、JSON.stringify-jsonデータを含む文字列を操作するために使用され、オブジェクトをリードします。 関数の構文はECMAScript 3.1に基づいています。
開発者ツール プロファイラーJavaScript。
Internet Explorerの8番目のバージョンでは、プログラマーの喜びのために、Firefoxブラウザー用の広範囲に及ぶFirebugアドオンを克服できるツールが追加されました。 このツールは単に開発者ツールと呼ばれ、次のパネルを表します。

パネルには、次のツールと機能が含まれています。
- ページのhtmlコードの検査。
- 適用されたスタイルの表示と編集。
- アイテム選択の上にマウスを置きます。
- JavaScriptコードの強力な組み込みデバッガー。
- ブロックスクリプト、CSS、ポップアップ。
- Idおよび要素のクラス、リンクに関する表示されたページ情報への出力。
- タイプ、位置、およびその他のパラメーターによる要素の強調表示。
- ページの画像管理、情報の表示。
- 組み込みの動的定規。
- 組み込みのカラーピッカー。
- 検証リンク。
さらに、このパネルには優れた機能が含まれています-JavaScriptコードプロファイラー:

このツールを使用すると、JavaScriptコードのボトルネックを簡単に追跡できるため、Webサイトのパフォーマンスとページの読み込み速度が向上します。
おわりに
この記事では、プログラマーに提供するInternet Explorerの新機能を調べてみました。 判明したように、ブラウザの新しいバージョンには、Webプロジェクトの開発者向けの多くの変更、改善、修正、追加が含まれています。 この記事の執筆時点では、beta2はInternet Explorer 8の最新バージョンのままでしたが、Microsoftがブラウザーに細心の注意を払い、大幅に改善したことは既に注目に値します。 開発者がウェブのトレンドに遅れないようにすることは重要です。 人気のあるブラウザの新しいバージョンの開発は、これらの傾向の1つです。 上記の資料が、開発者が知識を補充し、Internet Explorer 8の最終バージョンが提供するいくつかの新機能についていくのに役立つことを願っています。