1

次のhtmlサンプルでハイパーリンク「off」をクリックしてから「on」をクリックすると(非常に要約されたコード)、ie9がクラッシュします

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<HTML>
<HEAD>
    <meta http-equiv="Content-type" content="text/html;charset=UTF-8">
    <title>title</title>
</HEAD>
<BODY>
    <DIV style="display: inline;">
        <A style="float: left;">always&nbsp;</A>
    </DIV>

    <DIV style="display: inline;" id="hideMe">
        <A style="float: left;">some</A>
        <A style="float: left;">times&nbsp;</A>
    </DIV>

    <DIV style="display: inline;">
        <A style="float: left;">always&nbsp;</A>
    </DIV>

    <DIV>
        <A onclick="{document.getElementById('hideMe').style.display = 'inline';}" href="#">on</A>
        <A onclick="{document.getElementById('hideMe').style.display = 'none';}" href="#">off</A>
    </DIV>
</BODY>
</HTML>

次に何をすべきかわからない、コードに根本的な問題が見当たらない、それはHTML 4.01 Strictに合格する!検証。

助けていただければ幸いです

4

1 に答える 1

1

これをテストするために手にする IE9 はありませんが、コードを見るだけで、基本的な問題は要素float内にあると言えます。inline

inline要素には、ブロック コンテンツ (float を含む) を含めることは想定されていません。

この種のレイアウトが必要な場合は、display:inline-block代わりに を使用する必要がありinlineますが、フロートは不要になると思います。リンクはいずれにせよ、その内容内で左に整列する必要があるためです。

それが問題を解決するはずだと思います。

とはいえ、ブラウザをクラッシュさせた場合は、コードの品質や有効性に関係なく、ブラウザのバグです。ブラウザーは、この種のことを適切に処理できる必要があります。クラッシュは悪いニュースです。回避できたとしても、マイクロソフトに報告する必要があります。(問題を実証するための簡単なテストケースがあると、彼らにとって特に役立ちます)

于 2013-01-18T10:30:26.587 に答える