Intereting Posts
Можно ли переместить внутреннюю БД на SDCard? Как реализовать бесконечную галерею в Android? Android-дро с размытием Jacoco конвертирует coverage.ec в отчеты без покрытия. Android Google Cloud Messaging (GCM) и пропущенный идентификатор отправителя Установить значение по умолчанию для целочисленного столбца SQLite Содержимое адаптера изменилось, но ListView не получил уведомление, ничего не обновлялось в фоновом режиме Метод weakreference get (), насколько он безопасен? (Android, asynctask) Как обрабатывать миграцию области, если пользователи пропускают обновления Как обновить содержимое фрагмента из активности (viewpager)? Как отключить копирование / вставку из / в EditText Как играть в видео mp4 с помощью намерения моего приложения для Android? Это возможно? Перехват входящего вызова Android, переадресация вызова Получить щелчок по элементу из списка Com.google.android.gms.games.GamesClient не может быть разрешен

Как отключить отображение пейзажа / портрета в мобильном веб-приложении (Android Browser / iOS-Mobile Safari)

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

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

  1. Я попробовал прослушивать BOTH «changechange» и «изменять размер» событий и вызывать preventDefault и stopPropagation на них, чтобы предотвратить изменение поведения браузера при просмотре ландшафта при обращении. Ну, очевидно, предотвращая НИЧЕГО (в идеале).

    window.addEventListener("orientationchange", function (e) { e.preventDefault(); e.stopPropagation(); }, false); window.addEventListener("resize", function (e) { e.preventDefault(); e.stopPropagation(); }, false); 

Совершенно безразлично. Браузер по-прежнему реорганизовал страницу на Android (как pre2.1, так и после) и iPhone 4-5.

  1. Проверенные метатеги

     <meta name="viewport" content="initial-scale=1.0, user-scalable=no /> 

    Затем разозлился, попробовал

     <meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width" /> 

    Ни одна разница не изменилась.

  2. Яростно посмотрел на StackOverflow, увидел то, что я сделал на шаге 1. несколько раз выставлял … попытался снова убедиться, что я не что-то вникал. Не работает.

  3. Втянулся в мою гордость, а затем решил продолжать бежать в кирпичную стену из-за гордости, а затем действительно втянул свою гордость и разместил здесь.

HALP.

Очевидным решением является использование javaScript для этого:

 if(window.innerHeight > window.innerWidth){ document.getElementsByTagName("body")[0].style.transform = "rotate(90deg)"; } 

Когда экран вращается, поверните его назад.

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

 <head> <style type="text/css"> #landscape{ position: absolute; top: 0px; left: 0px; background: #000000; width: 100%; height: 100%; display: none; z-index: 20000; opacity: 0.9; margin:0 auto; } #landscape div{ color: #FFFFFF; opacity: 1; top: 50%; position: absolute; text-align: center; display: inline-block; width: 100%; } </style> <script> function doOnOrientationChange() { switch(window.orientation) { case -90: document.getElementById("landscape").style.display="block"; break; case 90: document.getElementById("landscape").style.display="block"; break; default: document.getElementById("landscape").style.display="none"; break; } } //Listen to orientation change window.addEventListener('orientationchange', doOnOrientationChange); </script> </head> <body onload="doOnOrientationChange();"> <div id="landscape"><div>"Rotate Device to Portrait"</div></div> </body> 

Вы не можете отключить мобильную ориентацию в веб-приложении. То, что вы можете сделать, – это поворот страницы на портрет (с использованием вращения css из JS), когда они меняют ориентацию на горизонтальную модель. Таким образом, они будут вынуждены использовать ваше веб-приложение в портретном режиме.

Вы также можете показать им сообщение (только «портретный режим» при попытке просмотра в горизонтальном режиме)

Держите его коротким и простым! :]

 window.addEventListener('orientationchange', function () { if (window.innerHeight > window.innerWidth) { document.getElementsByTagName('body')[0].style.transform = "rotate(90deg)"; } }); 

Добавление android: configChanges = "keyboardHidden | orientation" в ваш AndroidManifest.xml. Это сообщает системе, какие изменения конфигурации вы собираетесь обрабатывать самостоятельно – в этом случае ничего не делая.