在iOS上滚动iframe会导致页面滚动

时间:2015-08-19 12:16:09

标签: javascript ios css iframe

我有一个应用程序,显示用户需要能够在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冒泡到父级别,以便插件捕获它,但页面仍然可以反弹。

0 个答案:

没有答案