我似乎偶然發現了IE中的一個bug,其中scrollWidth與offsetWidth相比偏離了1px。對此的觸發似乎取決於元素中文本/字符的長度,只有當溢出設置爲除可見以外的內容時纔會發生。針對IE問題的解決方法scrollWidth
爲背景,爲什麼我檢查他們互相看這個問題:HTML - how can I show tooltip ONLY when ellipsis is activated
對於這個問題的一個例子中看到:http://jsfiddle.net/w5cwhjbf/2/
.base{
font-size: 16px;
overflow: hidden;
}
.wrapper{
float: left;
}
<div class="wrapper">
<div id="div1" class="base">
Why is my scrollWidth wrong in IE?
</div>
</div>
<br style="clear: both;">
<br>
<button id="btn1" onclick="fnCheckScroll(div1,btn1)">Calculates Wrong</button>
<br>
<br>
<br>
<div class="wrapper">
<div id="div2" class="base">
Why is my scrollWidth right in IE?
</div>
</div>
<br style="clear: both;">
<br>
<button id="btn2" onclick="fnCheckScroll(div2,btn2)">Calculates Correctly</button>
<br>
<br>
<br>
Issue seems to be based on the character widths/font size resulting in I would assume a fractional value that in one case gets rounded up and the other rounded down. The issue however does not ever cause scroll bars to appear (if overflow is auto). Issue doesnt happen with overflow: visible.
<script type="text/javascript">
function fnCheckScroll(div, btn)
{
var iScrollWidth = div.scrollWidth;
var iOffsetWidth = div.offsetWidth;
var iDifference = iScrollWidth - iOffsetWidth;
btn.innerHTML = ("Width: " + iOffsetWidth + "px | scrollWidth: " + iScrollWidth + "px | Difference: " + iDifference + "px");
}
</script>
你會發現在這個例子,雖然第一個項目有空間可以增長到任意大小,它的寬度設置爲1px太短,或者scrollWidth報告爲1px太大,以及t事實上,沒有滾動條被拋出(當CSS明確設置爲溢出:自動),IE知道它的代碼中的某處實際上並沒有溢出。
問題是,你會針對這個問題建議修正或解決方法是什麼,因爲它似乎是隨機發生在div中的字符/字體/字體大小?
嘿,你遇到一個很好的解決方法呢? –
不幸的是,我們不得不在IE瀏覽器版本的javascript檢查中加入1px寬限,並處理偶爾出現的問題,其中由於錯誤計算,工具提示未顯示。 –
是的,做同樣..糟糕 –