Ошибка: при скрытии элемента с JavaScript в IE8, поле все еще видимых других элементов на странице игнорируется.
Эта ошибка была введена в IE8, так как она работает, как и ожидалось в IE6 +7 (и другие браузеры).
<html>
<head>
<style>
#a, #b, #c, #d {background: #ccf; padding: 4px; margin-bottom: 8px;}
</style>
</head>
<body>
<div id="a">a</div>
<div id="b">b</div>
<div id="c">c</div>
<div id="d">d</div>
<script>
setTimeout(function () {
document.getElementById("b").style.display = "none";
}, 1000);
</script>
</body>
</html>
При запуске этого кода обратите внимание на то, что a
и c
имеют отступ между ними в обычных браузерах, равный 8, но в IE8 - 0.1008 *
- Удалите заполнение, и IE8 ведет себя как обычно.
- Удалите тайм-аут, и IE8 будет работать как обычно.
- Граница ведет себя так же.
Я работаю с ошибками IE последние 10 лет, но это поставило меня в тупик.На данный момент решение состоит в том, чтобы обернуть элементы div и применить поле к внешнему элементу, а другие стили - к внутреннему.Но это напоминает ужасные обходные пути IE6.
Есть ли лучшие решения?
Редактировать: Я отправил заявку в команду IE9, и теперь ошибка исправленав IE9.Надеюсь, они также перенесут его в IE8.