iframe 要素内に動的に script 要素を出力すると Internet Explorer が応答なしになる場合がある

現象
JavaScript を利用して、iframe 要素に対し動的に script 要素を出力すると、Internet Explorer が応答なしになる場合があります。

この現象は、以下の 3 つのいずれの条件にも合致する場合に発生します。
条件 1 : document.write メソッドにて動的に script 要素を出力している
条件 2 : document.close メソッドにて出力を終了している
条件 3 : script 要素の出力対象が iframe 要素である

以下の例では、window.onload イベントで iframe 要素を動的に生成し、生成した iframe 要素に .js ファイルを参照する script 要素を出力します。以下の内容を html 形式で保存し、また、script 要素にて参照している script.js ファイルを準備します。

<!DOCTYPE html><html><head><meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7"/></head><body><script type="text/javascript">window.onload = function() {    var iframe = document.createElement("iframe");    document.body.appendChild(iframe);    var doc = iframe.contentDocument || iframe.contentWindow.document;    doc.write("<script src='script.js'>\x3c/script>");    doc.close();}</script></body></html>
原因
この現象は、JavaScript 処理で document.write メソッドにて動的に script 要素を出力した場合に、Internet Explorer 内部で保持している文字数のカウントが不適切な状態となることに起因します。
解決方法
回避策
Internet Explorer 側、または Web サイト側にて対処することができます。

  • Internet Explorer 側での対処策
    JavaScript を無効化することにより現象を回避することができます。ただし、この方法は JavaScript を利用しているすべての Web サイトに影響が生じます。

    1. [ツール] (メニューが表示されていない場合は [Alt] キーを押下) メニュー > [インターネット オプション] をクリックします
    2. [セキュリティ] タブをクリックします
    3. 対象のゾーンを選択し [レベルのカスタマイズ] ボタンをクリックします
    4. [アクティブ スクリプト] を "無効にする" に変更します
    5. 表示中のダイアログをすべて [OK] ボタンで閉じます
  • Web サイト側での対処策
    Web サイト側での対応策としては以下のいずれかの方法で回避することができます。

    方法 1. "原因" に記載の条件に一つでも合致しないよう Web サイトを構成する
    方法 2. 最新のドキュメント モードを利用するよう構成する

    以下のいずれかの方法でドキュメント モードを指定できます。
    最新のドキュメント モードを利用するには、X-UA-Compatible に IE=Edge を指定します。
    ・meta 要素を利用する
     <meta http-equiv="X-UA-Compatible" content="IE=Edge"/>
    ・HTTP レスポンス ヘッダーを利用する
     X-UA-Compatible: IE=Edge


状況
マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。
詳細
関連情報
X-UA-Compatible を利用したドキュメント モードの指定については以下をご参照ください。

2.1.2.4 X-UA-Compatibility Meta Tag and HTTP Response Header
http://msdn.microsoft.com/en-us/library/ff955275(v=vs.85).aspx
注意 : これは、マイクロソフトのサポート組織内で直接作成された "緊急公開" の資料です。 この資料には、確認中の問題に関する現状ベースの情報が記載されています。 情報提供のスピードを優先するため、資料には誤植が含まれる可能性があり、予告なしに随時改定される場合があります。 その他の考慮事項については、使用条件を参照してください。
プロパティ

文書番号:2982981 - 最終更新日: 09/29/2016 15:46:00 - リビジョン: 3.0

Windows Internet Explorer 10, Internet Explorer 11

  • KB2982981
フィードバック