IE の インターネット サイト XXX は開けられません。 回避策

この問題は子コンテナ HTML 要素が子コンテナのコンテナ親要素を変更しようとするスクリプト コードを含むのが原因で発生します。 innerHTML メソッドまたは appendChild メソッドを使用すると、スクリプト コードは、親コンテナ要素を変更しようとします。


回避策

この問題を回避するために、クローズド コンテナを変更するのみまたはスクリプトのすぐコンテナ要素を変更するのみスクリプト ブロックを書き込みます。 これを行うために、ターゲット コンテナを閉じるために、プレースホルダが使用、または変更するコンテナにスクリプト ブロックが移動できます。


例 1

この例での DIV 要素は、子コンテナ要素です。 DIV 要素の内の SCRIPT ブロックは、 本文要素を変更しようとします。 本文要素は、 DIV 要素の閉じられなかった親コンテナです。

<html>
  <body>
      <div>
                  <script type="text/Javascript">
                    document.body.innerHTML+="sample text";
                  </script>
      </div>
  </body>
</html>

この問題を解決するために、以下のいずれかの方法を使用します。

方法 1:親要素を変更します。

本文要素のスコープへ SCRIPT ブロックを移動します。 スクリプトが変更しようとするコンテナです。

<html>
  <body>
      <div>
      </div>
      <script type="text/Javascript">
           document.body.innerHTML+="sample text";
      </script>
  </body>
</html>

方法 2: クローズド コンテナ要素を修正します。

親コンテナ要素のプレースホルダとしてクローズド コンテナを追加します。 スクリプト ブロックとの新しいクローズド コンテナを次に変更します。

<html>
  <body>
      <div id="targetContainer">
      </div>
      <div>
      <script type="text/Javascript">
           document.getElementById('targetContainer').innerHTML+="sample text";
      </script>
      </div>
  </body>
</html>


例 2

この例で、 appendChild メソッドを使用すると、入れ子に深くなった TD コンテナ要素の内、ある SCRIPT ブロックは、親コンテナ 本文要素を変更しようとします。

<html>
  <body>
      <table>
                <tr>
                         <td>
                                 <script type="text/Javascript">
                                                  var d = document.createElement('div');
                                                  document.body.appendChild(d);
                                 </script>
                         </td>
                 </tr>
      </table>
  </body>
 </html>

この問題を解決するために、 本文要素に SCRIPT ブロックを移動します。

 <html>
  <body>
      <table>
                <tr>
                        <td>
                       </td>
                 </tr>
      </table>
      <script type="text/Javascript">
                                  var d = document.createElement('div');
                                  document.body.appendChild(d);
                     </script>
  </body>
 </html>


状況

マイクロソフトでは、この不具合をこの資料の対象製品として記載されているマイクロソフト製品の不具合として認識しています。


詳細

たとえば、この問題が DIV 要素が 本文要素の子コンテナで、そして DIV 要素の SCRIPT ブロックが DIV 要素の親コンテナである 本文要素を変更しようとすると、発生することがあります。 これが Internet Explorer のパーサーのバグです。

http://support.microsoft.com/default.aspx/kb/927917

If you enjoyed this post, please consider to leave a comment or subscribe to the feed and get future articles delivered to your feed reader.

Comments

No comments yet.

Leave a comment

(required)

(required)