这是两个测试文件:
这两个页面上的标记几乎相同。有一个有两列的表。一列(第二列)的<th>
和<td>
元素都被赋予“垃圾”类。
在“好”页面中,当您加载它时,您会在顶部看到一个未选中的复选框。如果您选中该复选框,第二列应该会消失。如果取消选中它,第二列会返回。在“坏”页面中,复选框开始被选中。取消选中它在 IE7 中没有任何效果,尽管它在其他浏览器中有效,这些浏览器没有被根本邪恶所拥有。
该复选框连接到一个小的 Javascript 例程,该例程只是从<table>
标签中添加或删除类“compact”。有一个包含以下内容的样式表:
table.compact th.junk, table.compact td.junk {
display: none;
}
因此,应该发生的是“好”页面上发生的事情。但是,似乎在 IE7(也可能是 6)中,如果表格元素开始时在最初呈现时它们的样式被设置为不可见,则它们将永远不会被看到,无论后续对 DOM 的更改是否会带来新的样式规则生效并使其可见。(这似乎是一个<table>
特别是零件的问题;我在其他地方使用相同的机制和其他元素,它们都工作正常。)
所以,问题是:有没有人知道一些黑客——无论多么令人反感——可以用来绕过这种愚蠢的行为?显然,我可以尝试安排 IE7 使用相关的切换控件集启动其视图,以便表格单元格可见,但在我的情况下,这发生在作为 AJAX 响应生成的表格周围,所以它会很大我宁愿避免混乱。(该表实际上也是一个表;它是表格信息的显示,而不是布局技巧。)
我四处搜索并没有发现任何东西,如果您考虑从“IE7 布局错误”搜索中获得多少点击,这应该不足为奇。