Trong tất cả các trình duyệt gần đây:How Do I Get innerWidth trong Internet Explorer 8
window.innerWidth // 1920
Trong Internet Explorer 8
window.innerWidth // undefined
cách tốt nhất để có được giá trị này trong IE8 là gì?
Trong tất cả các trình duyệt gần đây:How Do I Get innerWidth trong Internet Explorer 8
window.innerWidth // 1920
Trong Internet Explorer 8
window.innerWidth // undefined
cách tốt nhất để có được giá trị này trong IE8 là gì?
Các innerWidth
được hỗ trợ bởi IE9 không IE8, bạn có thể làm insteaad này:
var width = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
Dòng trên sẽ giúp bạn có được chiều rộng từ IE cũng như các trình duyệt tiêu chuẩn phù hợp khác.
Nếu bạn sử dụng jQuery, $(window).innerWidth()
cũng sẽ cung cấp cho bạn kết quả mong muốn trong tất cả các trình duyệt.
'$ (cửa sổ) .innerWidth()' không trả về cùng số với 'window.innerWidth' nếu thanh cuộn dọc hiển thị trên trang. –
.innerWidth() không áp dụng cho các đối tượng cửa sổ và tài liệu, như được đề cập trong tài liệu jquery. http://api.jquery.com/innerWidth/ "Phương pháp này không áp dụng cho các đối tượng cửa sổ và tài liệu; vì vậy, sử dụng phương thức .width()." –
Tôi cần 'document.body.clientWidth' ngay cả trong IE9 (quirks) – jan
Bạn có thể lấy thông tin này từ IE 8 với
document.documentElement.clientWidth
Xin lưu ý rằng giá trị này sẽ không hoàn toàn giống nhau rằng IE 9 lợi nhuận cho window.innerWidth
.
Without jQuery bạn có thể thử này để có được height
và width
var myWidth = 0, myHeight = 0;
if (typeof (window.innerWidth) == 'number') { //Chrome
myWidth = window.innerWidth;
myHeight = window.innerHeight;
} else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
myWidth = document.documentElement.clientWidth;
myHeight = document.documentElement.clientHeight;
} else if (document.body && (document.body.clientWidth || document.body.clientHeight)) { //IE9
myWidth = document.body.clientWidth;
myHeight = document.body.clientHeight;
}
Nhận xét 'Chrome' gây hiểu nhầm vì thuộc tính này được tất cả các trình duyệt hiện đại hỗ trợ: https://developer.mozilla.org/en-US/docs/Web/API/window.innerWidth?redirectlocale=en-US&redirectslug=DOM% 2Fwindow.innerWidth # Browser_compatibility ... bao gồm IE9 làm cho 'else if' lỗi thời. – retrovertigo
Bạn đã đọc câu hỏi chưa? OP đã yêu cầu mã mà sẽ làm việc cho IE8 –
cho phép tôi rephrase "... mà làm cho thứ hai 'khác nếu' lỗi thời". – retrovertigo
document.documentElement.clientWidth;
này được sử dụng cho IE8 để có được những khách hàng rộng
cho ie8 sử dụng
document.documentElement.clientWidth
Hãy Lưu ý: Phương thức .innerWidth không áp dụng cho các đối tượng cửa sổ và tài liệu; cho những cái này, sử dụng .width() thay thế.
Tôi biết đây là khoảng một tuổi ... nhưng OP không sử dụng jQuery ... –
Đối với việc này, tôi vẫn còn sử dụng:
window.innerWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
window.innerHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
Tuy nhiên, để bắt chước thực dom-getter hãy xem này: https://stackoverflow.com/a/18136089/1250044
Tôi biết rằng innerWidth
có thể không khá giống nhau, nhưng cũng có thể sử dụng getBoundingClientRect
với công suất tương tự:
elem = document.documentElement.getBoundingClientRect();
width = elem.getBoundingClientRect().right - elem.getBoundingClientRect().left;
Bạn đã khám phá [jQuery] (http://jquery.com) chưa? Nó rất dễ dàng để làm điều này bằng cách sử dụng nó. –
có chắc chắn, $ (cửa sổ) .innerWidth() hoạt động tốt trong IE8, nhờ – antonjs
@AntoJs '$ (cửa sổ) .innerWidth()' không trả về cùng một số như 'window.innerWidth' nếu thanh cuộn dọc hiển thị trên trang. –