<main class="page-content"></main>
Web ページがIE8 のタグのコンテンツをレンダリングしていません。私はbackbone.jsフレームワークを使用しており、ページに要素を追加するビューがあります。私もhtml5shivを使用しています。
最初の要素は find だけを追加します (ナビゲーション バーとそのすべての要素)。.page-content
ただし、要素を追加しようとすると、IE8 はエラーをスローします。jQuery の find メソッドの不一致が原因であることがわかりました。IE8 のみで.find('.page-content')
、タグを含む DOM で を実行すると、メソッドは.outerHTML
プロパティが に設定された要素を返します<MAIN class=page-content>
。終了タグ (およびすべての内部要素) が欠落していることに注意してください。これは IE8 でのみ発生し (>IE8 はまだテストしていません)、発生すると、appendChild()
jQuery のappend()
メソッド内でメソッドが失敗します。
jQuery の find メソッドをさらに掘り下げたところ、問題の原因は jQuery が Web API メソッドを使用する場合にあることがわかりましたquerySelectorAll()
。jQuery のコードでは、開発者は次のようにコメントしています。
// qSA works strangely on Element-rooted queries
// We can work around this by specifying an extra ID on the root
// and working up from there (Thanks to Andrew Dupont for the technique)
// IE 8 doesn't work on object elements
とはいえ、これが何を意味するのかはよくわかりません…。
この問題を示すために、jsFiddle の例を作成しました: http://jsfiddle.net/VHL7Q/6/
IE8 で jsFiddle リンクを開くと、アラートが表示されます。
<MAIN class=page-content>
または、Chrome または Firefox で jsFiddle リンクを開くと、アラートが表示されます。
<main class="page-content">
<div class="help-toggle">
<i class="icon-info-sign"></i>
</div>
</main>
DOM ツリーをトラバースするための独自の find メソッドを修正する以外に、この問題の解決方法がわかりません。
注: 効果があると思われる「応急処置」タイプの解決策は、<main></main>
タグをタグに置き換えることでした<div></div>
。ただし、このソリューションを永続的に使用することはできません。<main></main>
タグの使用方法を見つける手助けが必要です。