我有一个应用程序,显示用户需要能够在iPad上滚动的iframe。
显然,除非您在CSS中使用特殊的-webkit-overflow-scrolling
,否则默认情况下您无法在iOS上滚动iframe和其他元素。
例如,我有以下HTML(基于David Walsh的解决方案:http://davidwalsh.name/scroll-iframes-ios)
<div class="frameContainer">
<iframe src="./frame.html"></iframe>
</div>
和CSS:
*
{
margin: 0;
padding: 0;
border: 0;
outline: 0;
}
html,
body
{
height: 100%;
background: #ff0000;
}
.frameContainer
{
position: absolute;
top: 40px;
left: 80px;
right: 80px;
bottom: 40px;
background: #ffffff;
overflow: auto;
-webkit-overflow-scrolling: touch;
/* removes spacing below iframe */
font-size: 0;
line-height: 0;
}
.frameContainer iframe
{
width: 100%;
height: 100%;
}
但是,您可以通过轻弹页面(在iframe周围)或通过改变您轻弹的速度(例如,用手指慢慢拖动)来使页面(红色区域)反弹并失去iframe的焦点。或者点击iframe周围的页面。
在这里演示:http://preview.na-software.co.uk/Demo/ipadscroll/
我尝试了一些插件,例如:http://www.hakoniemi.net/labs/nonbounce/来阻止页面反弹,但由于它是一个iframe,它仍然会导致页面在与框架交互时具有反弹效果,因为它是不同的文档级别。我也尝试将触摸事件从iframe冒泡到父级别,以便插件捕获它,但页面仍然可以反弹。