jquery işlevi $(window).outerWidth(true);
kullanarak android cihazlar için yön değiştirme üzerinde pencere genişliğini hesaplamak çalışıyorum. Bu hesaplama, hem iphone
hem de ipad
için yönelim değişikliğine doğru genişlik verir, ancak android'de değil. Sayfayı yatay modda veya dikey modda yüklüyorsam, doğru genişliği alıyorum ancak sayfayı yükledikten sonra yön değiştirdikten sonra, yatay modda olduğu gibi dikey modda genişliğini alıyorum veya tam tersi. Neler olduğunu öğrenin ve bu sorunu nasıl halledebilirim ki ben de android cihazda yönelim değiştirmede doğru pencere genişliğini aldımYönlendirmelerde doğru pencere genişliğini nasıl elde edebilirsiniz Android cihazlar hem de tabletler ve cep telefonları için değiştirin
cevap
Neden javascript screen
nesnesini kullanmayın. Birlikte ekran boyutlarını almak gerekir:
screen.height;
screen.width;
Masaüstü yeniden boyutlandırmayı kontrol etmem gerektiğinden, masaüstü dahil tüm cihazlar için genel olarak $ (window) .outerWidth (true); 'kullanıyorum. Yukarıdaki yöntemi kullanırsam, özellikle android cihazları kontrol etmem gerekecekti. Cevabınızı hala kontrol edecek ama jQuery işlevi neden doğru sonucu vermiyor. Android cihazlar için ne olur – user850234
Bu Android 2.3'de yanlış bir değer döndürecektir. –
bu yüzden android – neaumusic
sırasıyla window.innerWidth
deneyin window.innerHeight
; Android'in dış genişlik ve yükseklik ile ilgili olmaması;
http://forum.jquery.com/topic/orientationchange-event-returns-wrong-values-on-android
Bu yazı sizin için uygun olabilir bir çözüm var gibi görünüyor 'orientationchange' olay kodu.
function onOrientationChange(event)
{
setTimeout(function(){
'Enter you code here';
},200);
}
Umut, bu sizin ve diğerlerinin çoğunda size yardımcı olacaktır .. Şerefe. Bunun yerine orientationChange olayın dinleme
Ben de bu sorunun sıkışmış ve platforms.Below tüm üzerinde çalışacak en iyi çözümü bulmak:
Teşekkürler, Bu çalışır. Ama emülatörde çalışmayacak. –
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
, sen olayı yeniden boyutlandırmak pencereye dinleyebilirsiniz, bu window.innerHeight/outerHeight özellikleri güncellendi var sağlayacağız.
Durumumda window.innerWidth bir yönlendirme değişikliğini tetikledikten sonra yeniden boyutlandırıldı. –
Android'de, sayıların değişmesi için bazen birkaç saniye sürmesi gereken bir sorun var. Kullandığınız platforma aşina değilim, fakat C++ 'da, çözüm bir yönlendirme değişikliğinden sonra birkaç kare için tekrar tekrar sorgulamaktır. – bitwise