1

当我单击以下 html 示例中的超链接“关闭”然后“打开”时,(非常精简的代码),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 可以对此进行测试,但仅查看代码我会说基本问题是floats 内部inline元素。

inline元素不应该包含任何块内容(包括浮动)。

如果你需要这种布局,你应该使用display:inline-block而不是inline,虽然我认为浮动仍然是不必要的,因为链接应该在它们包含的左侧排列。

我认为这应该可以解决问题。

说了这么多,如果你的浏览器崩溃了,那么它就是一个浏览器错误,不管代码的质量或有效性如何。浏览器应该能够优雅地处理这种事情;崩溃是个坏消息。即使您设法解决它,您也应该向 Microsoft 报告。(如果你有一个简单的测试用例来证明问题,这对他们特别有帮助)

于 2013-01-18T10:30:26.587 回答