錯誤:在IE8中使用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在正常的瀏覽器保證金,但0 IE8的餘量。
- 刪除填充,IE8的行爲就像正常。
- 刪除超時和IE8行爲正常。
- 邊框的行爲方式相同。
過去10年來我一直在使用IE-bugs,但是這讓我很難過。現在的解決方案是包裝divs,並將邊界應用於外部元素和其他樣式到內部。但是,這讓人想起了可怕的IE6解決方法。
任何更好的解決方案?
編輯:我向IE9團隊提交了一張票,現在該錯誤已在IE9中修復。希望他們能夠將它支持到IE8。
我無法在IE8(v。8.0.7600.16385)中重現該錯誤。我顯示了與其他瀏覽器類似的正確結果。 – 2010-06-08 08:46:41
這是一個有趣的。嗯...... – edl 2010-06-08 09:02:15
這個bug每次都在我的IE8(v.8.0.6001.18094)以及IE9預覽中發揮它的魔力。 – Magnar 2010-06-08 09:26:23