检测“overflow:auto”是否正常工作(移动浏览器)

时间:2012-02-08 17:31:46

标签: javascript mobile scroll media-queries modernizr

我想以某种“好的”方式(Modernizr最有可能,但无论如何)检测布局是否应该嵌入页面的可滚动区域,否则(对于某些移动用途)应该只将所有内容作为一个流可滚动的质量。

具体案例是一个类似“EULA”的页面,其中有一个带有“I ACCEPT”按钮或其他形式的表单,然后是大量可怕的全部大写合法内容。在大屏幕上,我希望整个表单都可见,所以我想把合法的东西放在自己的滚动框中。然而,在一个有点丑陋的移动设备上(虽然我不是移动ux专家),所以我想把它全部放在线上,以便用户可以通过简单的滑动来阅读文本(LOL)滚动,然后在底部按钮将滚动到视图中。

我想我可以查看与Modernizr的联系,但这似乎不太合适。

编辑 - 虽然我很确定我所描述的内容可能无论如何都是可用性胜利,但问题是我发现我的Android设备不会注意“溢出” :自动“在页面中间的<div>上。

2 个答案:

答案 0 :(得分:2)

我采取的方法是依靠Modernizr.touchModernizr.overflowscrolling测试。如果Modernizr在DOM中的touch元素中插入no-overflowscrollinghtml类(或者直接检查Modernizr.touchModernizr.overflowscrolling),那么我会避免{{ 1}}。这意味着错误处理overflow:auto的Android设备无法获取它。

这可能是一个不完美的解决方案;可能有一些设备可以处理overflow:auto在这种情况下无法获得它的设备。但这并不是世界末日,至少在我的情况下。它似乎适用于所有最常见的设备/浏览器。

它具有简单的优点。我已经将Modernizr加载用于其他用途。

答案 1 :(得分:1)

正如其他人所说,Modernizr.overflowscrolling检查overflow-scrolling css属性,而不是设备是否可以使用divoverflow: auto内滚动内容。

事实上,在我最近的测试中,Nexus 5实际上将Modernizr.overflowscrolling作为false返回,因此无法依赖它。

这个非常小的脚本(没有依赖关系)似乎启用了缺少支持的设备(Android 2.3)的触摸滚动... http://chris-barr.com/2010/05/scrolling_a_overflowauto_element_on_a_touch_screen_device/

链接到回购: https://github.com/chrismbarr/TouchScroll