javascript - 测试溢出-y :auto returning true on android < 3 even though it doesnt work

标签 javascript android css android-browser browser-support

我正在为 Android 开发一个网络应用程序。在某个地方,我需要查找浏览器是否支持 overflow-y:auto,因为我需要滚动 div。
但是在 android <3 中对此进行测试返回 true,表明其受支持,但在使用时它无法按预期方式工作,即带有

的 div
overflow-y:auto 

不滚动。

有没有可靠的方法来查看浏览器是否支持此属性。我使用 Modernizr 编写了这个测试,但它总是返回 true,这意味着它受支持。

Modernizr.addTest('overflowauto', function(){
var bool = false;
var testProp = "overflow-y";
var testVal = "auto";
var styles = Modernizr._prefixes.join(testProp + ":" + testVal + "; ");
var ret = true;
ret =  Modernizr.testStyles('#modernizr { '+styles+' }', function(elem, rule){
    for(var i = 0; i < Modernizr._prefixes.length; i++) {
        bool = (window.getComputedStyle ?
                getComputedStyle(elem, null) :
                elem.currentStyle)[Modernizr._prefixes[i] + testProp] == testVal;

        if(bool) break;
    }

    return bool;

});
return ret;

});

但显然当我使用它时它不起作用。 请告诉我一种可靠的方法来确定该特性是否可以安全使用,或者我可以采取什么措施。

最佳答案

你可以试试这个:

Modernizr.addTest("overflowscrolling",function(){
    return Modernizr.testAllProps("overflowScrolling");
});

然后检查 Modernizr 将插入到 DOM 中的 html 元素中的 overflowscrollingno-overflowscrolling 类。这似乎适用于 iOS 和 Android 设备。 (或者直接检查 Modernizr.overflowscrolling 的值。)

由于 overflowscrolling 特定于某些浏览器/设备(例如最近的 iPhone),因此我也会检查 Modernizr.touch。如果它不是触摸设备,我认为它可以处理溢出滚动。由于 Android 是触摸设备,因此将使用 Modernizr.overflowscrolling 进行测试,但您不必在笔记本电脑上测试 Chrome(这将返回 false,但可以处理 overflow:auto) 很好)。

所以测试可能不完美,但它似乎对我测试过的所有我关心的用例做了正确的事情:所有现代桌面浏览器、最新的 iPhone 和 Android 2.X 设备。如果您要支持更广泛的设备/浏览器,则必须对它们进行测试并进行适当的调整。

关于javascript - 测试溢出-y :auto returning true on android < 3 even though it doesnt work,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10483397/

相关文章:

javascript - 电子邮件提交输入清除/css 在 iphone Safari 或 Chrome 上不起作用

javascript - 将变量传递给嵌套 jQuery 函数

android - 适用于 Android 的 Flurry Analytics : Data not being sent to Flurry dashboard?

android - 避免使用 api 并始终使用实现?

javascript - NuxtJS + Vuex — 存储中的数据

javascript - ExtJs grid.Panel 存储 : keep scrollbar position after load/reload

android - Camera2 中的前置摄像头无法捕捉图像

css - 如何在 Angular 7 中同时使用 css 和 sass 文件?

html - 为交替的 <DIV> 行提供背景

javascript - 根据随机数生成随机背景图片