KB927917解決方法

其實很簡單,就是把js代碼放到</body>標籤之前就可以解決了。

 

下面是微軟給出的解釋。

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

 

出現此問題的原因子容器 HTML 元素包含試圖修改子容器的父容器元素的腳本。 腳本試圖使用 innerHTML 方法或 appendChild 方法修改父容器元素。

是例如如果 DIV 元素是在 BODY 元素中的子容器,並在 DIV 元素中的一個 SCRIPT 塊嘗試修改 DIV 元素的父容器的 BODY 元素,可能會出現此問題。

 

示例 1

在本例中, DIV 元素是一個子容器元素。 SCRIPT 塊在 DIV 元素內的嘗試修改 BODY 元素。 BODY 元素是關閉的父容器的 DIV 元素。

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

要解決此問題,請使用以下方法之一。

方法 1: 修改父元素

SCRIPT 塊移動到 BODY 元素的範圍。 這是腳本試圖修改的容器。

<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

在此示例,深層嵌套的 TD 容器元素內的一個 SCRIPT 塊會嘗試通過 appendChild 方法中修改父容器 BODY 元素。
<html>
  <body>
      <table>
                <tr>
                         <td>
                                 <script type="text/Javascript">
                                                  var d = document.createElement('div');
                                                  document.body.appendChild(d);
                                 </script>
                         </td>
                 </tr>
      </table>
  </body>
 </html>
要解決此問題,請插入 BODY 元素中移動 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>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章