У меня есть требование, когда клиент желает поместить существующее веб-приложение внутрь iframe внутри приложения cordova, и они обращаются ко мне за помощью. Существующее веб-приложение использует css, привязанное к области просмотра (позиция: фиксированная, высота: 100vh, бесконечная прокрутка и т. Д.) *
В десктопе / андроиде это ведет себя как ожидалось - страница выделяет прямоугольную область для iframe, которая затем действует как страница внутри страницы, занимающей эту область. К сожалению, то, как он работает в мобильном сафари, совершенно безумно - сафари игнорирует директивы ширины и высоты для фрейма и расширяет его содержимое на содержащей странице - он ведет себя больше как div с overflow: visible. (Примечание: при запуске safari для настольных компьютеров в режиме адаптивного дизайна код ведет себя нормально - то есть: все мы привыкли ожидать, что фреймы iframe ведут себя с тех пор, как они были введены почти 20 лет назад)
Я прочитал несколько ответов, предполагая, что я обертываю фрейм внутри div, и у меня есть этот размер и прокрутка правильно (например: как правильно отображать iFrame в мобильном сафари ), но это не будет работать для меня потому что iframe содержит набор элементов, привязанных к области просмотра, поэтому пользовательский интерфейс в результате полностью разрушается.
Мои вопросы:
Зачем им менять поведение чего-то столь устоявшегося?
Есть ли способ заставить iframe отображаться традиционным способом в мобильном сафари, о котором я не знаю? (Я могу только думать, что любой здравомыслящий инженер, изменяющий поведение по умолчанию чего-либо, существовавшего в течение 20 лет, должен был бы предоставить запасной вариант - возможно, атрибут в iframe «noExpand» или что-то в этом роде?)