Я ищу правильный способ убедиться, что динамически отображаемый контент виден после прокрутки в iframe на ipad / iOS5.
О, Iframes и iPad - какой ты прекрасный старый каштан. Я знаю, что:
- iPad расширяет фреймы до полной высоты содержимого внутри него (почти так же, как при использовании свойства HTML5 " seamless ", но не совсем, поскольку он не наследует стили или события от родителя). Причудливый, раздражающий многих, но верный.
<iframe height="100%">
, следовательно, бесполезен, поскольку его размер соответствует содержимому, а не контейнеру
Мне нужно обернуть свой iframe в div - а-ля
<div id="wrapper" style="-webkit-overflow-scrolling:touch;overflow:auto;">
<iframe width="100%" height="100%" src="about"blank"></iframe>
</div>
или еще добавьте хитрость для установки положения прокрутки кадра (который, я думаю, основан на уловках, упомянутых в этой статье )
Моя проблема заключается в том, что содержимое, которое динамически отображается внутри тела iframe (например, вкладки jquery, аккордеон и т. Д.), Может привести к тому, что браузер обрезает содержимое в экстентах страницы.
например. если мои «вкладки» находятся в большей части пути вниз по видимому окну просмотра внутри iframe, и я выполняю прокрутку двумя пальцами (или реализую взлом «одним пальцем»), то после того, как это содержимое прокручивается в представление, часть его содержимого, которое ранее было не нарисованный остается неиспользованным. Повторное нажатие на вторую вкладку / назад приводит к тому, что содержимое выглядит так, как если бы страница не отображала содержимое вне экрана. После этого, если я затем прокручиваю назад вверх страницы, содержимое не рисуется для начала страницы (что было ранее видно). Прокрутка страницы вверх и вниз несколько раз с помощью прокрутки двумя пальцами решает проблему.
Я прочитал эту статью , в которой говорилось, что проблема устранена. Но это не кажется полностью исправленным; и все еще не решает проблему, заключающуюся в том, что из-за того, что вы должны обернуть свой iframe в div и поместить полосы прокрутки в этот div, браузеры рабочего стола могут отображать двойную полосу прокрутки в зависимости от того, как они интерпретируют overflow:auto
.
p.s. Я использую шаблонную страницу HTML5 как внутри, так и вне iframe, с правильными настройками метапортпорта.