Tôi đang cố gắng phát hiện kích thước hiện tại của trình duyệt (chiều rộng và chiều cao). Tôi biết nó là siêu dễ dàng trong jQuery với $(document).width and $(document).height
, nhưng tôi không muốn thêm kích thước của lib jQuery cho dự án, vì vậy tôi chỉ muốn sử dụng được xây dựng trong JavaScript. Điều gì sẽ là cách ngắn và hiệu quả để làm điều tương tự với JavaScript?Kích thước trình duyệt (chiều rộng và chiều cao)
Trả lời
// first get the size from the window
// if that didn't work, get it from the body
var size = {
width: window.innerWidth || document.body.clientWidth,
height: window.innerHeight || document.body.clientHeight
}
kích thước cơ thể không giống như kích thước cửa sổ, mà nó mong muốn thực sự. – vsync
Điều này có thể được tối ưu hóa bằng cách sử dụng các toán tử ngắn mạch. ví dụ: 'width: window.innerWidth || document.body.clientWidth' –
@vsync, điều đó đúng, nhưng kích thước cửa sổ không được tất cả các trình duyệt xác định. @ Peter, điểm tốt. Tôi sẽ cập nhật điều đó. – Joel
Hãy thử điều này;
<script type="text/javascript">
winwidth=document.all?document.body.clientWidth:window.innerWidth;
winHeight=document.all?document.body.clientHeight:window.innerHeight;
alert(winwidth+","+winHeight);
</script>
Bạn không nên sử dụng kiểm tra trình duyệt như 'document.all' thay vì kiểm tra xem clientWidth chưa được xác định chưa. – Joel
@ Joel, Tại sao không, bạn có thể vui lòng đóng góp câu trả lời của bạn không. Cảm ơn – dono
Chỉ vì trình duyệt thực hiện hoặc không thực hiện 'document.all' không có nghĩa là nó không thực hiện hoặc không thực hiện' document.body.clientHeight'. Bạn nên kiểm tra thuộc tính bạn muốn, chứ không phải thuộc tính không liên quan. – Joel
function getWindowSize(){
var d= document, root= d.documentElement, body= d.body;
var wid= window.innerWidth || root.clientWidth || body.clientWidth,
hi= window.innerHeight || root.clientHeight || body.clientHeight ;
return [wid,hi]
}
trình duyệt IE là những người duy nhất không sử dụng innerHeight và Width.
Nhưng không có 'chuẩn' - chỉ triển khai trình duyệt.
Kiểm tra html (document.documentElement) clientHeight trước khi kiểm tra body- nếu nó không phải là 0, nó là chiều cao của 'viewport' và body.clientHeight là chiều cao của thân thể - có thể lớn hơn hoặc nhỏ hơn cửa sổ.
Chế độ lùi trả về 0 cho phần tử gốc và chiều cao cửa sổ (khung nhìn) từ phần thân.
Cùng với chiều rộng.
Trường hợp sử dụng của tôi cho window.innerWidth
liên quan đến việc xây dựng cửa sổ bật lên tùy chỉnh theo phương thức. Đơn giản chỉ cần đặt, người dùng nhấp vào nút, cửa sổ bật lên sẽ mở ra ở giữa trình duyệt và có một bkgd màu đen trong suốt phía sau cửa sổ bật lên. Vấn đề của tôi là tìm chiều rộng và chiều cao của trình duyệt để tạo bkgd trong suốt.
window.innerWidth
hoạt động tốt để tìm chiều rộng nhưng hãy nhớ window.innerWidth and window.innerHeight
không bù cho thanh cuộn, vì vậy nếu nội dung của bạn vượt ra ngoài khu vực nội dung hiển thị. Tôi đã phải trừ đi 17px so với giá trị.
transBkgd.style.width = (window.innerWidth - 17) + "px";
Vì nội dung của trang web luôn vượt quá chiều cao nhìn thấy được, tôi không thể sử dụng window.innerHeight
. Nếu người dùng cuộn xuống bkgd trong suốt sẽ kết thúc tại thời điểm đó và điều đó trông khó chịu. Để duy trì bkgd trong suốt đến tận đáy nội dung tôi đã sử dụng document.body.clientHeight
.
transBkgd.style.height = document.body.clientHeight + "px";
Tôi đã kiểm tra cửa sổ bật lên trong IE, FF, Chrome và có vẻ tốt trên bảng. Tôi biết điều này không theo câu hỏi ban đầu quá nhiều nhưng tôi con số nó có thể giúp đỡ nếu bất cứ ai khác chạy vào cùng một vấn đề khi tạo một phương thức tùy chỉnh bật lên.
Đây là một mẫu mã
function getSize(){
var w=window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
var h=window.innerHeight || document.documentElement.clientHeight ||document.body.clientHeight;
}
- 1. truy vấn phương tiện cho kích thước trình duyệt có chiều rộng nhỏ hơn chiều cao
- 2. Kích thước, Chỉ thay đổi chiều rộng/chiều cao
- 3. Nhận chiều rộng và chiều cao của trình duyệt sau khi người dùng đổi kích thước cửa sổ
- 4. Chiều cao và chiều rộng hình ảnh không hoạt động?
- 5. Tự động thay đổi kích thước chiều rộng và chiều cao bằng hộp thoại jQuery
- 6. Thay đổi kích thước/tỷ lệ facebook như nút (chiều cao và chiều rộng)
- 7. Chiều rộng và chiều cao tùy chỉnh trong DOMPDF
- 8. Hỗ trợ trình duyệt thuộc tính chiều rộng và chiều cao của getBoundingClientRect?
- 9. Chỉ định Chiều rộng và Chiều cao của Lô
- 10. Tăng chiều rộng và chiều cao của đầu ra gnuplot
- 11. FancyBox thay đổi kích thước chiều rộng
- 12. Chiều rộng và chiều cao phần web SharePoint động
- 13. Cách tự động kích thước chiều cao của nhãn nhưng không phải chiều rộng
- 14. iPhone có chiều rộng và kích thước hình ảnh
- 15. GetSupportedPreviewSize trả về chiều rộng và chiều cao ngược
- 16. hình nền css thay đổi kích thước chiều rộng chiều cao cây trồng
- 17. HTML/CSS - điều chỉnh kích thước phông chữ để lấp đầy chiều cao và chiều rộng của bố mẹ
- 18. Lấy chiều cao văn bản bao gồm kích thước phông chữ và đặt chiều cao đó
- 19. Chiều rộng và chiều cao của giao diện người dùng jQuery dựa trên chiều rộng và chiều cao màn hình
- 20. jQuery ~ Cách kích hoạt hộp chiều rộng và chiều cao từ trung tâm trung tâm
- 21. Chiều rộng và chiều cao thời gian chạy của Usercontrol
- 22. Cách thay đổi kích thước phông chữ và chiều rộng và chiều cao của các tab jQuery-UI
- 23. Firefox: kích thước hộp và chiều cao tối thiểu
- 24. Dừng chu trình jQuery để điều chỉnh chiều cao và chiều rộng của các thùng chứa
- 25. JavaScript - Nhận Chiều cao Trình duyệt
- 26. CSS 100% chiều rộng trên trình duyệt thay đổi kích thước
- 27. Nhận chiều rộng/chiều cao của bố cục trong Android
- 28. Chiều cao và chiều rộng tương đối nhưng vị trí tuyệt đối x, y
- 29. Đặt cột lưới/Chiều rộng hàng/Chiều cao động
- 30. Cách Đo Chiều cao TextView Dựa trên Chiều rộng và Kích thước Phông chữ của Thiết bị?
này đã được trả lời khá tốt trong: http://stackoverflow.com/questions/1766861/find-the-exact-height-and-width-of-the -view-in-a-cross-browser-way-no-protot – vsync