2017-08-16 26 views
17

Tôi đã bị kẹt với nhiệm vụ dễ dàng như xác định chiều rộng và chiều cao của trang trên iOS khi trang được thu phóng bởi người dùng.Cách xác định chiều rộng và chiều cao của chế độ xem thực tế trên iOS

Vấn đề là một số trang web có bố cục lạ và trông như thế này:

enter image description here

Đây là một trang không thu nhỏ lại và nó có độ phân giải 1164x1811 pixel và đó là chính xác. Tôi có các giá trị này từ window.innerWidthwindow.innerHeight. Vùng được đánh dấu là phần tử nội dung và có độ phân giải 1024x1594 pixel, điều đó quan trọng.

Tiếp theo, tôi sử dụng pinch-to-zoom để phóng to trang trong và đây là cách có vẻ:

enter image description here

Bây giờ, khi tôi cố gắng để có được kích thước trang tôi đã 1024x1594 pixel từ window.innerWidthwindow.innerHeight tương ứng . Những giá trị này chính xác giống với kích thước cơ thể.

Vì vậy, câu hỏi đặt ra là làm thế nào để có được kích thước trang phù hợp cho dù có thu phóng hay không.

Tôi đã thử nghiệm trường hợp cụ thể này trong Chrome và nhận kết quả chính xác: luôn là 1164x1811 pixel bất kể thu phóng.

+0

Bạn vui lòng kiểm tra URL của mình trước trong trình duyệt. Sử dụng URL đáp ứng để làm cho URL hoạt động bình thường. – Rex

+0

@rex điều là tôi có thể xác định kích thước khung nhìn bất kể trình bày trên điện thoại di động/máy tính để bàn của trang, do đó chuyển sang chế độ phản hồi không phải là tùy chọn –

Trả lời

5

CHỈNH SỬA: Sử dụng document.body.clientWidthdocument.body.clientHeight để nhận các tính toán bạn mong muốn, vì giải pháp ban đầu của tôi hiện được coi là lỗi thời.

Bạn có thể sử dụng document.widthdocument.height để truy xuất kích thước trang gốc trên iOS Safari, ngay cả khi bạn đã thu nhỏ kích thước.

Đây là một thử nghiệm trên số Space Jam site cũ (mà bạn nghĩ đến khi cố nghĩ đến một trang web chắc chắn sẽ không đáp ứng được).

enter image description here

+0

lạ, các thuộc tính này không được xác định trên iOS 10.3. cũng được đánh dấu là lỗi thời trong đặc điểm kỹ thuật: ( –

+0

@nicholas_r Bạn hoàn toàn đúng - Trình mô phỏng iOS của tôi đã được đặt thành 9. Tôi nhận được không xác định trong 10. Giữ, xin vui lòng! –

+0

@nicholas_r Cập nhật câu trả lời của tôi - vui lòng sử dụng 'tài liệu .body.clientWidth' và 'document.body.clientHeight' để lấy kích thước ban đầu của tài liệu khi được phóng to. Đã thử nghiệm thành công trong iOS 10.3 –

2

Đây là một cách phức tạp hơn nhưng kinda vô dụng: Thực hiện một yếu tố trang có kích thước sau đó tính toán/nhận được kích thước thực tế của nó.

let page_size = { height: null, width: null }; 
{ 
    let div = document.createElement('div'); 
    (styles => Object.keys(styles).forEach(k => div.style[k] = styles[k]))({ 
     height: '100vh', width: '100vw', 
     position: 'fixed', 
     top: '-100vh', left: '-100vw' 
    }) 
    document.body.appendChild(div); 
    page_size.height = div.offsetHeight; 
    page_size.width = div.offsetWidth; 
} 
+0

đó là cách tôi đã kết thúc và nó không hoạt động trong mọi trường hợp, đặc biệt trong trường hợp được cung cấp trong câu hỏi, bạn có thể thử bằng cách điều hướng đến habrahabr.ru từ thiết bị iOS và chuyển sang phiên bản trang web dành cho máy tính để bàn –

Các vấn đề liên quan