Я работаю над одностраничным веб-приложением, которое чаще всего будет использоваться на мобильных устройствах. Одной из его функций является режим карты, который временно занимает все окно браузера; шкала расстояний и некоторые элементы управления прикреплены к четырем углам карты. Вот небольшой скриншот карты, чтобы вы могли понять, о чем я говорю:
Карта реализована в виде <div>
со position: fixed
и все четыре координаты ноль; Я также временно установил значение <body>
в overflow: hidden
то время, когда карта видима, чтобы обрабатывать случай, когда отображение базового приложения прокручивается от источника. Этого достаточно, чтобы карта работала именно так, как я хочу в настольных браузерах. Мобильные браузеры также требовали, чтобы я дал мета-тег viewport с чем-то вроде "width=device-width,user-scalable=no"
того, чтобы сделать видимую область окна точно соответствующей области просмотра.
Все это прекрасно работало несколько лет назад, когда я первоначально написал это приложение, но где-то в этом направлении iOS Safari прекратил соблюдение любых параметров метапортпорта, связанных с масштабированием - очевидно, слишком много сайтов неправильно использовали тег, в результате чего текст, который был нечитабельно маленьким, еще не масштабируется. В настоящее время, если вы включите карту в этом браузере, вы, вероятно, получите слегка увеличенный вид, который обрезает эти кнопки справа и снизу - и вы ничего не можете с этим поделать, потому что все касания интерпретируются как жесты масштабирования / панорамирования для карты, а не прокрутка браузера. Карта не очень полезна без доступа к функциям с помощью этих кнопок, а без кнопки в верхнем правом углу вы даже не сможете закрыть карту. Единственный выход - перезагрузить страницу, что может привести к потере несохраненных данных.
Я определенно собираюсь добавить использование history.pushState
/, onpopstate
чтобы наложение карты велось как отдельная страница. Вы сможете выйти из режима карты, используя кнопку браузера «Назад», но это не решает остальную часть потери функциональности из-за отсутствия кнопок.
Я рассмотрел использование .requestFullscreen()
для реализации наложения карты, но это не поддерживается везде, где в противном случае приложение можно было бы использовать. В частности, это явно не работает на iPhone, а на iPad вы получаете строку состояния и огромную кнопку «X», наложенную на ваш контент - моя шкала расстояний, скорее всего, больше не будет читаться. Во всяком случае, это не семантически то, что я действительно хочу - мне нужно полное окно , а не полный экран.
Как получить полноэкранное отображение, работающее в современных браузерах? Вся информация, которую я могу найти по теме, говорит об использовании мета-тега viewport, но, как я уже говорил, больше не работает.