2012-04-18 17 views
5

Tôi đang cố gắng tính chiều rộng cửa sổ khi thay đổi hướng cho thiết bị Android bằng chức năng jquery $(window).outerWidth(true);. Tính toán này cung cấp chiều rộng chính xác về thay đổi hướng cho cả hai iphoneipad nhưng không có trong android. Nếu ban đầu tôi tải trang ở chế độ ngang hoặc chế độ dọc, tôi sẽ nhận được chiều rộng chính xác nhưng khi tôi thay đổi hướng sau khi tải trang, tôi sẽ nhận được chiều rộng cho chế độ dọc như ở chế độ ngang và ngược lại. Vui lòng đề xuất những gì đang xảy ra và làm cách nào tôi có thể xử lý vấn đề này để tôi có được chiều rộng cửa sổ chính xác về thay đổi hướng trong thiết bị AndroidCách lấy chiều rộng cửa sổ chính xác về thay đổi hướng cho thiết bị Android cả máy tính bảng và điện thoại di động

+1

Có sự cố trong Android, đôi khi mất vài giây để các số thay đổi. Tôi không quen với nền tảng bạn đang sử dụng, nhưng trong C++, giải pháp là thăm dò liên tục cho một vài khung hình sau khi thay đổi định hướng. – bitwise

Trả lời

8

Tại sao không sử dụng đối tượng javascript screen. bạn sẽ có thể nhận kích thước màn hình với:

screen.height; 
screen.width; 
+0

Tôi đang sử dụng '$ (cửa sổ) .outerWidth (true);' làm tổng quát cho tất cả các thiết bị kể cả máy tính để bàn vì tôi cũng cần phải kiểm tra kích thước của trình duyệt. Nếu tôi sử dụng các phương pháp trên thì tôi sẽ cần phải kiểm tra cụ thể cho các thiết bị Android. Vẫn sẽ kiểm tra câu trả lời của bạn nhưng tại sao chức năng jquery không đưa ra kết quả chính xác. Điều gì xảy ra cho thiết bị Android – user850234

+1

Điều này sẽ trả về giá trị sai trên Android 2.3. –

+0

đây là lý do tại sao tôi ghét android – neaumusic

0

Hãy thử window.innerWidth, tương ứng, window.innerHeight; Đó là posible rằng android không phải về outerWidth và Height;

4

Tôi cũng đã bị mắc kẹt trong vấn đề này và tìm ra giải pháp tốt nhất mà sẽ làm việc trên tất cả các platforms.Below là mã của sự kiện 'orientationchange'.

function onOrientationChange(event) 
{ 
    setTimeout(function(){ 
     'Enter you code here'; 
    },200); 
} 

Hy vọng, nó sẽ giúp bạn và hầu hết những người khác nữa .. Chúc mừng.

+0

Cảm ơn, Công trình này. Nhưng nó sẽ không hoạt động trên trình giả lập. –

0
      var isMobile = { 
           Android: function() { 
            return navigator.userAgent.match(/Android/i); 
           }, 
           BlackBerry: function() { 
            return navigator.userAgent.match(/BlackBerry/i); 
           }, 
           iOS: function() { 
            return navigator.userAgent.match(/iPhone|iPad|iPod/i); 
           }, 
           Opera: function() { 
            return navigator.userAgent.match(/Opera Mini/i); 
           }, 
           Windows: function() { 
            return navigator.userAgent.match(/IEMobile/i); 
           }, 
           webOS: function() { 
            return navigator.userAgent.match(/webOS/i); 
           }, 
           any: function() { 
            return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Opera() || isMobile.Windows()); 
           } 
          }; 


          var tell_if_mobile; 
          var mobile_tablet; 
          if (isMobile.any()) { 
           tell_if_mobile = true; 
          } else { 
           tell_if_mobile = false; 
           var windowWidth = window.screen.width < window.outerWidth ? 
                window.screen.width : window.outerWidth; 
           tell_if_mobile = windowWidth < 800; 
           mobile_tablet = windowWidth >= 500 ? "Tablet/Phablet Device" : "Desktop View (Mobile)"; 
          } 

          var mobile_type; 
          mobile_type = isMobile.Android() ? "Android Device" : 
              isMobile.BlackBerry() ? "Blackberry Device" : 
              isMobile.iOS() ? "iOS Device" : 
              isMobile.Opera() ? "Opera Mobile/Mini" : 
              isMobile.Windows() ? "IEMobile" : 
              isMobile.webOS() ? "webOS device" : 
              tell_if_mobile == true ? mobile_tablet : 
              "Not a mobile device"; 
alert(mobile_type); //result 
1

Thay vì nghe orientationchange sự kiện, bạn có thể nghe cửa sổ thay đổi kích thước sự kiện, nó sẽ đảm bảo rằng window.innerHeight/tài sản outerHeight đã được cập nhật.

+0

Trong trường hợp của tôi window.innerWidth không được cập nhật sau khi thay đổi định hướng kích hoạt thay đổi kích thước sự kiện –