Есть ли последовательный способ определения ширины экрана и виртуального окна просмотра для мобильных устройств с помощью Javascript? Мои целевые платформы - мобильный Safari и стандартный браузер Android, но я также тестирую другие браузеры на Android.
Я пробовал с screen.width
, window.innerWidth
, document.getElementByTagName("body")[0].clientWidth
и jQuery $(window).width()
.
Мобильный Safari (начиная с ios 3.1.3 (7E18), оригинальный iPod touch) показывает полезные значения, а стандартный браузер Android (Android 2.3.7) - нет.
В идеале я думаю, что screen.width должен показывать фактическое разрешение экрана в пикселях: 320 пикселей на iPod Touch и 480 пикселей на Samsung Galaxy S2. На основании того, что я читал, одно из других чисел должно показывать ширину области просмотра layout, которая должна составлять 980 пикселей на iTouch и 800 пикселей на Samsung Galaxy S2. .
.
Код
<body>
<h1>screen.width: <span id="screen_width"></span></h1>
<h1>window.innerwidth: <span id="window_innerwidth"></span></h1>
<h1>clientWidth: <span id="clientwidth"></span></h1>
<h1>jQuery width: <span id="jquery_width"></span></h1>
</body>
<script type="text/javascript" src="jquery/jquery-1.7.1.min.js"></script>
<script type="text/javascript">
window.onload = function(){
var swidth = screen.width;
var wiwidth = window.innerWidth;
var cwidth = document.getElementsByTagName("body")[0].clientWidth;
var jwidth = $(window).width();
document.getElementById("screen_width").innerHTML = swidth;
document.getElementById("window_innerwidth").innerHTML = wiwidth;
document.getElementById("clientwidth").innerHTML = cwidth;
document.getElementById("jquery_width").innerHTML = jwidth;
}
</script>
.
.
Результаты
iOS Safari:
screen.width: 320
window.innerwidth: 980
clientWidth: 964
jQuery width: 980
Браузер Android:
screen.width: 800
window.innerWidth: 800
clientWidth: 784
jQuery width: 800
Firefox Mobile (он же Fennec):
screen.width: 480
window.innerwidth: 980
clientWidth: 964
jQuery width: 980
Конечно, можно использовать результаты Safari, но не результаты браузера Android.
Парадоксально, что мобильные результаты Firefox точны. Хотя он обеспечивает приятный просмотр с точки зрения пользователя, это недостаточно большая цель для мобильных устройств, и есть много других вещей, которые не работают в этом браузере.