Ich habe ein Problem mit der Verwendung von OffsetWidth über verschiedene Browser. Dieser Unterschied in den Ergebnissen verursacht einige seltsame Layouts. Ich habe ein sehr kleines Beispiel erstellt, das anzeigt, was ich sehe.Cross Browser offsetWidth
HTML
<table id="tbl">
<tr>
<td>Cell 1</td>
<td>Cell 2</td>
</tr>
</table>
<button onclick="calc()">Calculate Offset Width</button>
<div>Cell 1 offsetWidth: <span id="c1offWidth"></span></div>
js
function calc(){
document.getElementById('c1offWidth').innerHTML =
document.getElementById('tbl').children[0].children[0].offsetWidth;
}
CSS
Wenn ich dies auf Chrom laufen, Safari und Opera der Wert für die Zelle 1 der Versatzbreite zurückgeführt wird 72. Wenn ich dies laufen auf den folgenden IE9-10 und der zurückgegebene Wert ist 77.
I war Unter dem Eindruck war dies der beste Weg, um die Breite eines Elements einschließlich Polsterung und Rand zu berechnen.
Gibt es eine Cross-Browser-Lösung, die immer das gleiche Ergebnis liefert? Ich habe versucht, jQuery zu verwenden, aber die Ergebnisse waren noch verwirrender.
BEARBEITEN Weil jeder outwardWidth empfiehlt, habe ich auch einen jsbin dafür gemacht. Die Ergebnisse unterscheiden sich immer noch in den verschiedenen Browsern. Chrome gibt 36 zurück; IE9-10 und Firefox zurückkehren 39.
Sie Lächerlichkeit so viele unwissend Programmierer jQuery wie play doh zu verwenden, wenn wir Modelliermasse verwenden sollten! Verwenden Sie native JS nicht eine Ressource hog Bibliothek wie jQuery. Mach deine JSperf-Tests! – EasyBB
Ah ja, die alte 1 globale 1-Datei-Technik. http://www.avacweb.com/17860.js. Tolles Muster, um Ihre Benutzer zu verlangsamen. – BradGreens