0

IE10 は HTML 階層を破損/変更しているようです。これは、次のサンプルでよりよく説明されています

<html>
<head>
<title>IE10 example</title>
</head>
<body>
<script language="javascript">
     function submitForm() {
         var temp;
         temp = document.getElementById("myTable");
         alert(temp.innerHTML);
     }
   </script> 
<table id="myTable">
<thead>
  <tr>
    <td>First Name</td><td>Last Name</td>
  </tr>
</thead>
<tbody >
  <form action="/users" method="post" name="userform">
    <input type="hidden" name="userName">
    <tr>
      <td>admin</td>
    </tr>
    <tr>
      <td>SA</td>
    </tr>
  </form>
</tbody>
</table>
<script language="javascript">
      submitForm()
</script> 
</body>
</html>

上記の HTML ページを IE10 に読み込むと、フォーム ノードが入力ノードより先に閉じられます。したがって、任意の入力ノードへのアクセスは、NULL/未定義エラーで失敗します。この HTML は、Mozilla、Chrome、IE9、IE10 の比較モードで期待どおりにロードされます。

この動作は予期されたものですか? お時間とご協力に感謝します

4

1 に答える 1

1

これはIE10に固有のものではありません。DOMは、IE10、Chrome、Opera、Firefoxでも同じようになります。上に示したマークアップをコピーして、私が行ったテストに入力する前に、すべてフォームを閉じます。

https://dl.dropbox.com/u/444684/stackoverflow/test.html

最初の問題は、Doctypeが不足していることです。これにより、ブラウザはquirksmodeになります。つまり、標準にレンダリングされず、ルールははるかに灰色になります。ブラウザ間の一貫性を高めるには、ドキュメントの上部にHTML5Doctypeを追加する必要があります。

次の問題は、フォームがtbody要素の直接の子になることを許可されていないことです。無効であるため、HTML5解析アルゴリズムに従い、フォームを閉じます。これを回避するには、フォームをテーブルの親にするなど、フォームを移動します。

https://dl.dropbox.com/u/444684/stackoverflow/test2.html

IEのF12などのブラウザデバッガを見ると、入力がフォーム内にあることがわかります。また、DOMインスペクターはデバッグがはるかに簡単な方法であるため、アラートは不要になります。

于 2012-12-20T19:13:14.310 に答える