Событие изменения ориентации jQuery для мобильных устройств

Итак, вот мой код.

$( window ).on( "orientationchange", function( event ) {
alert('1');
if (event.orientation == 'landscape'){
    alert('2');
    $('.item').css('width', '30.66%');   
} else if (event.orientation == 'portrait') {
    $('.item').css('width', '47%');   
}
});

$(document).on('ready', function () {
    $( window ).orientationchange(); 
});

Я просто пытаюсь изменить ширину моих объектов с именем .item. Я посмотрел синтаксис для изменения ориентации на мобильном телефоне jQuery, и он оказался правильным. Теперь я получаю свое первое предупреждение каждый раз, когда я меняю ориентацию, как и ожидалось, но я не попадаю внутрь оператора if. Из того, что я прочитал, вы получаете доступ к ориентации с помощью event.orientation, и она равна «портретной» или «пейзажной», но, похоже, это не работает для меня. Последняя часть просто для того, чтобы функция вызывалась, как только загружалась страница, которая всегда работает нормально. Спасибо


person Thomas Devin    schedule 13.08.2013    source источник
comment
Вы пробовали проверить значение с помощью alert(event.orientation);?   -  person Joe    schedule 14.08.2013
comment
Я только что попробовал это, и я становлюсь неопределенным, что кажется странным.   -  person Thomas Devin    schedule 14.08.2013
comment
Я также испытал нестабильное поведение на некоторых устройствах. Вместо этого я бы предложил просто использовать событие изменения размера окна api.jquery.com/resize. обнаружил, что иногда значение event.orientation на самом деле не изменяется до тех пор, пока не будет запущено событие. Я попытался немного отложить действие с помощью setTimout, но обнаружил, что событие изменения размера работает лучше. Кроме того, просто внимательно посмотрел на то, что вы пытаетесь сделать. Возможно, вам лучше использовать медиа-запросы CSS здесь.   -  person pantryfight    schedule 14.08.2013
comment
@pantryfight - думаю, ты прав. Вы должны добавить ответ, используя медиа-запросы!   -  person Joe    schedule 14.08.2013


Ответы (1)


Ориентация — это свойство объекта window.screen, а не события. Пытаться

if (window.screen.orientation.indexOf('landscape') >= 0){...}

Поскольку это развивающийся стандарт, вам также может потребоваться проверить реализацию конкретного поставщика, например. window.screen.mozOrientation

Ссылки

person cfs    schedule 14.08.2013