Tôi đã quét qua tất cả các thư viện js phổ biến, nhưng tôi không thể tìm thấy một thư viện có chức năng chiều rộng cho phần tử DOM thực sự giải thích chế độ quirks trong Internet Explorer. Vấn đề là đệm và đường viền không được tính trong chiều rộng khi chế độ quirks được tương tác. Theo tôi có thể nói điều này xảy ra khi loại tài liệu bị loại bỏ hoặc doctype được đặt thành html 3.2.Chiều rộng của phần tử kế toán chế độ quirks trong javascript?
Rõ ràng là tôi chỉ có thể đặt loại tài liệu thành tiêu chuẩn tương thích, nhưng tập lệnh này có thể được nhúng ở bất kỳ đâu nên tôi không có quyền kiểm soát đối với tài liệu.
Để chia nhỏ sự cố thành các phần nhỏ hơn:
1) Làm thế nào để bạn phát hiện chế độ quirks? 2) Cách tốt nhất để trích xuất đường viền và phần đệm từ một phần tử để bù lại là gì?
Ví dụ với nguyên mẫu:
<html>
<head>
</head>
<body>
<div id="mydiv" style="width: 250px; pading-left: 1px; border: 2px black solid">hello</div>
<script>
alert($('mydiv').getWidth())
</script>
</body>
</html>
kết quả:
253 (ff) 250 (ví dụ)
Cảm ơn trước!
nơi nào thuộc tính currentStyle đến từ đâu? Tôi đang thử nó trong ff và nó có vẻ là undefined – christoff
currentStyle là phiên bản của IE getComputedStyle(). Nó trả về giá trị thực tế của thuộc tính CSS đã cho. Bạn có thể đọc thêm trong bài viết của PPK: http://www.quirksmode.org/dom/getstyles.html – pawel
Với Prototype, bạn cũng có thể sử dụng Element.getStyle(). –