Как программно найти ширину устройства в Phonegap / JQuery mobile - PullRequest
18 голосов
/ 28 февраля 2012

Мне нужно найти ширину устройства мобильного устройства. Хотя мы можем указать содержание

<meta name="viewport" content="width=device-width; user-scalable=no" />

Но мне нужно программно получить ширину устройства, чтобы вычислить некоторую логику в моем приложении. Как узнать ширину устройства?

Ответы [ 2 ]

41 голосов
/ 28 февраля 2012

Размеры viewport могут быть получены с помощью объекта window:

var viewport = {
    width  : $(window).width(),
    height : $(window).height()
};

//can access dimensions like this:
//viewport.height

Хотя вы не всегда получите идеальный результат, разные устройства ведут себя по-разному, и это дает размеры viewport,не размеры экрана.

В качестве альтернативы вы можете проверить ширину data-role="page" элемента, чтобы найти device-width (поскольку для device-width установлено 100%):

var deviceWidth = 0;
$(window).bind('resize', function () {
    deviceWidth = $('[data-role="page"]').first().width();
}).trigger('resize');​​​
18 голосов
/ 03 июня 2014

Не уверен, что предложенное решение работает, как ожидалось. Вы уверены, что получаете реальную ширину устройства?

Я использую следующий код в своем приложении, и он отлично работает:

function effectiveDeviceWidth() {
    var deviceWidth = window.orientation == 0 ? window.screen.width : window.screen.height;
    // iOS returns available pixels, Android returns pixels / pixel ratio
    // http://www.quirksmode.org/blog/archives/2012/07/more_about_devi.html
    if (navigator.userAgent.indexOf('Android') >= 0 && window.devicePixelRatio) {
        deviceWidth = deviceWidth / window.devicePixelRatio;
    }
    return deviceWidth;
}

Надеюсь, это кому-нибудь поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...