Можно ли предотвратить изменение ориентации iPhone / iPad в браузере? - PullRequest
7 голосов
/ 05 мая 2010

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

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

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

Ответы [ 6 ]

5 голосов
/ 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 документы .

3 голосов
/ 05 мая 2010

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

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

1 голос
/ 18 августа 2010

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

0 голосов
/ 29 марта 2012

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

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

window.onorientationchange = orient;    
orient();
0 голосов
/ 08 сентября 2011

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

Используйте ответ медопала для определения ориентации и изменения ориентации вашего тела.

например:

document.getElementsByTagName("body")[0].style.webkitTransform = "rotate(-90deg)";
0 голосов
/ 07 июня 2010

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

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