0

<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>タグの使用方法を見つける手助けが必要です。

4

2 に答える 2

1

問題は、IE8 が HTML5 を完全にサポートしていないことです。特に、要素が何であるかはわかりませんmain

これらの問題のいくつかは を使用することで解決できますがHTML5 Shim、100% 互換性があるかどうかはわかりません。

リンク の説明: (要するに、shim はdocument.elementCreateすべての新しい HTML5 要素に対してa を実行しIE8て、それらが存在することを認識するようにします。)

于 2014-04-07T20:16:46.773 に答える
0

6 日間掘り下げた後、私は 1 日目にすべきことを行いました。html5shiv と modernizr を最新バージョンに更新しました。具体的には、 html5shiv3.6.1から3.7.0に更新し、 modernizr2.5.3から2.7.1に更新しました。

これは、jQuery と Web API の詳細な機能に関する私の質問への直接的な回答ではありませんが、ライブラリの最新バージョンが 5 年前のソフトウェア製品の問題を解決する可能性があると推測できます。

助けてくれたジェレミーとクッキーモンスターに感謝します。

于 2014-04-08T22:27:16.350 に答える