Ответ 1
Основная проблема с iOS Safari заключается в том, что тег iframe
рассматривается как некоторый отзывчивый элемент и будет действовать странно по размеру и содержать элементы (загруженные HTML). Я тестировал с использованием iframe
с реальным контентом, поэтому он будет полностью прокручиваться. Используя тот же код, что и в вашем примере, Safari iOS показал iframe
с полной высотой содержащегося в нем содержимого содержимого html с определенной width
и height
.
Чтобы решить проблему, вам нужно включить iframe
в контейнер block
, а затем установить размер контейнера блока (width
и height
) и overflow
в auto
и добавить атрибут поставщика в тело, чтобы позволить iframe
правильно прокручиваться. Кроме того, не забудьте установить iframe как прокручиваемое.
Вы можете отказаться от реализации js
.
Я тестировал это на каждом настольном браузере, Safari iOS и Mobile Chrome.
Вы также можете проверить эту ссылку, когда обсуждается отзывчивое содержимое внутри iframe.
Надеюсь, поможет.
Основной html
:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<style>
body {
-webkit-overflow-scrolling: touch;
}
.iframeContainer, iframe {
width: 200px;
height: 200px;
}
.iframeContainer {
overflow: auto;
}
</style>
</head>
<body>
<section>
<p>hello</p><p>hello</p><p>hello</p><p>hello</p><p>hello</p><p>hello</p><p>hello</p>
<div class="iframeContainer">
<iframe id="appSimulator" frameborder="0" src="scrolling.html" scrolling="yes"></iframe>
</div>
<p>hello</p><p>hello</p><p>hello</p><p>hello</p><p>hello</p><p>hello</p><p>hello</p>
</section>
</body>
</html>
Загруженный iframe
:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<style>
body {
background-color: black;
color: white;
}
</style>
</head>
<body>
<p>hello</p>
<p>hello</p>
<p>hello</p>
<p>hello</p>
<p>hello</p>
<p>hello</p>
<p>hello</p>
<p>hello</p>
<p>hello</p>
<p>hello</p>
<p>hello</p>
<p>hello</p>
<p>hello</p>
<p>hello</p>
<p>hello</p>
<p>hello</p>
<p>hello</p>
<p>hello</p>
<p>hello</p>
<p>hello</p>
<p>hello</p>
<p>hello</p>
<p>hello</p>
<p>hello</p>
<p>hello</p>
<p>hello</p>
<p>hello</p>
<p>hello</p>
<p>hello</p>
<p>hello</p>
<p>hello</p>
<p>hello</p>
<p>hello</p>
<p>hello</p>
<p>hello</p>
<p>hello</p>
<p>hello</p>
<p>hello</p>
<p>hello</p>
<p>hello</p>
<p>hello</p>
<p>hello</p>
<p>hello</p>
<p>hello</p>
<p>hello</p>
<p>hello</p>
<p>hello</p>
<p>hello</p>
<p>hello</p>
<p>hello</p>
</body>
</html>