Tôi đã gặp sự cố khi sử dụng offsetWidth trên các trình duyệt khác nhau. Sự khác biệt trong kết quả này gây ra một số bố trí lạ. Tôi đã tạo ra một ví dụ rất nhỏ hiển thị những gì tôi đang nhìn thấy.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
Khi tôi chạy trên Chrome, Safari, và opera giá trị trả về cho chiều rộng bù di động 1 là 72. Khi tôi chạy trên firefox và IE9-10 giá trị trả về là 77.
tôi theo ấn tượng, đây là cách tốt nhất để tính toán chiều rộng của một phần tử bao gồm phần đệm và đường viền.
Có giải pháp trình duyệt chéo nào sẽ luôn trả về cùng một kết quả không? Tôi đã thử sử dụng jQuery nhưng kết quả thậm chí còn khó hiểu hơn.
CHỈNH SỬA Vì mọi người đều đề xuất outerWidth Tôi cũng đã tạo một jsbin cho điều đó. Kết quả vẫn khác nhau giữa các trình duyệt. Chrome trả về 36; IE9-10 và Firefox trở lại 39.
Chúng vô lý của rất nhiều lập trình không biết gì khi sử dụng jQuery như chơi doh khi chúng ta nên sử dụng điêu khắc đất sét! Sử dụng JS gốc không phải là một số thư viện hog tài nguyên như jQuery. Làm bài kiểm tra jsperf của bạn! – EasyBB
Ah vâng, kỹ thuật tập tin 1 toàn cầu cũ 1. http://www.avacweb.com/17860.js. Mô hình tuyệt vời để làm chậm người dùng của bạn. – BradGreens