Ich habe auf einen Fehler in IE gestoßen, wo die ScrollWidth um 1px im Vergleich zu der OffsetWidth off ist. Der Auslöser dafür scheint von der Länge des Textes/der Zeichen im Element abhängig zu sein und tritt nur auf, wenn der Überlauf auf etwas anderes als sichtbar gesetzt ist.Workaround für das Problem mit IE scrollWidth
Für Kontext auf, warum ich sie gegeneinander sehen, diese Frage bin Überprüfung: HTML - how can I show tooltip ONLY when ellipsis is activated
Ein Beispiel für die Ausgabe sehen: 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>
Sie werden feststellen, in das Beispiel, obwohl das erste Element Platz hat, um zu irgendeiner gewünschten Größe zu wachsen, ist seine Breite 1px zu kurz eingestellt, oder die scrollWidth berichtete 1px zu groß ist, sowie t Die Tatsache, dass keine Bildlaufleiste ausgelöst wird (wenn CSS explizit auf Überlauf gesetzt ist: auto), weiß IE irgendwo in seinem Code, dass es nicht wirklich überläuft.
Frage ist, was wäre Ihre vorgeschlagene Reparatur oder Workaround für dieses Problem, da es scheint, dass es zufällig auf der Grundlage der Zeichen/font/font-Größe in der div?
Hey, haben Sie kommen über eine gute Abhilfe für dieses? –
Leider nein, wir mussten die 1px-Anmutung in der Javascript-Prüfung für die IE-Versionen einfügen und befassen uns mit dem gelegentlichen Problem, wo der Tooltip aufgrund der Fehlkalkulation nicht angezeigt wurde. –
Ja, habe das gleiche .. saugt –