Ho riscontrato un problema con l'utilizzo di offsetWidth su diversi browser. Questa differenza nei risultati sta causando alcuni strani layout. Ho creato un esempio molto piccolo che mostra ciò che sto vedendo.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
Quando ho eseguito questo su Chrome, Safari, Opera e il valore restituito per la larghezza di offset cella 1 di è 72. Quando eseguo questo su Firefox e IE9-10 il valore restituito è 77.
ero sotto l'impressione questo era il modo migliore per calcolare la larghezza di un elemento compreso il padding e il bordo.
Esiste una soluzione cross browser che restituirà sempre lo stesso risultato? Ho provato ad usare jQuery ma i risultati sono stati ancora più confusi.
EDIT Poiché tutti consigliano outerWidth, ho creato anche un jsbin. I risultati sono ancora diversi tra i vari browser. Chrome restituisce 36; IE9-10 e Firefox restituiscono 39.
Essi ridicolaggine di tanti programmatori ignoranti che utilizzano jQuery come plastilina quando dovremmo usare argilla scultura! Usa JS nativo non una libreria di risorse come jQuery. Fai i tuoi test di jsperf! – EasyBB
Ah sì, la vecchia 1 tecnica di file 1 globale. http://www.avacweb.com/17860.js. Ottimo modello per rallentare i tuoi utenti. – BradGreens