Можно ли предотвратить изменение ориентации iPhone / iPad в браузере?

Я видел похожие вопросы по этой проблеме, но они связаны с собственными приложениями. Я создаю веб-приложения для iPhone / iPad, которые запускаются в браузере (Safari).

Мне было интересно, есть ли способ предотвратить изменение ориентации в браузере, возможно, с помощью какого-нибудь метатега. Я знаю метатег видового экрана, который позволяет вам указывать возможности масштабирования и масштабирования, поэтому решил, что, возможно, есть что-то подобное для ориентации.

Я сомневаюсь, что это возможно, но я подумал, что просто задам здесь вопрос, чтобы посмотреть.


person BoomShaka    schedule 05.05.2010    source источник
comment
stackoverflow.com/questions/1207008/   -  person TMan    schedule 08.02.2014


Ответы (6)


Не представляется возможным предотвратить изменение ориентации, но вы можете обнаружить это с помощью кода, упомянутого выше.

Если вы хотите предотвратить изменение ориентации, это выглядит так, как будто вам нужно создать собственное приложение с использованием WebKit, которое аннулирует событие.

person Brian Cully    schedule 05.05.2010

Вы можете обнаружить изменения ориентации с помощью onorientationchange.

Javascript:

/*window.orientation returns a value that indicates whether iPhone is in portrait mode,    landscape mode*/
window.onorientationchange = function() {
var orientation = window.orientation;

switch(orientation) {
    case 0:
         //Portrait mode
    case 90: 
         // Landscape left
    case -90:
         //Landscape right
}

Это написано в документе для iPhone. Здесь из документов iPhone.

person medopal    schedule 05.05.2010
comment
Спасибо medopal, но я уже знаю, что это можно обнаружить. Мой вопрос был в том, можно ли этого предотвратить. - person BoomShaka; 20.05.2010

Вы могли бы быть действительно хитрыми и повернуть тело веб-сайта, чтобы противодействовать изменению ориентации, если ничего не работает ...

person Ian Storm Taylor    schedule 17.08.2010

почему вы не можете просто вставить event.preventDefault() в функцию?

person Michael.G.Dupee    schedule 07.06.2010

вы не можете предотвратить это, но вы можете изменить ориентацию тела в соответствии с ориентацией ipad.

Используйте ответ medopal, чтобы определить ориентацию и изменить ориентацию своего тела.

Например:

document.getElementsByTagName("body")[0].style.webkitTransform = "rotate(-90deg)";
person meo    schedule 08.09.2011

Этот фрагмент кода сохранит ориентацию на -90 градусов (хорошо для ландшафтного режима, крышка iPad 2 будет свисать сзади). Поместите это под конечным тегом тела в скрипте или заключите последние две строки в вызове onready.

function orient() {
    var keepOrientationAt = -90;
    var rotate = "rotate(" + (keepOrientationAt - window.orientation) + "deg)";
    document.getElementsByTagName("body")[0].style.webkitTransform = rotate;
}

window.onorientationchange = orient;    
orient();
person user1299416    schedule 28.03.2012
comment
Хорошая идея, хотя при повороте она не отображается идеально. Возможно, поможет какой-нибудь трюк, например, изменение положения всего тела и установка ширины или что-то в этом роде. Конечно, это то же самое, что предлагает Мео. - person BoomShaka; 30.03.2012