Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 溢出测试-y:在android上自动返回true<;即使它不起作用_Javascript_Android_Css_Android Browser_Browser Support - Fatal编程技术网

Javascript 溢出测试-y:在android上自动返回true<;即使它不起作用

Javascript 溢出测试-y:在android上自动返回true<;即使它不起作用,javascript,android,css,android-browser,browser-support,Javascript,Android,Css,Android Browser,Browser Support,我正在为android开发一个网络应用程序。在某个地方,我需要查找浏览器中是否支持overflow-y:auto,因为我需要滚动div. 但是在安卓

我正在为android开发一个网络应用程序。在某个地方,我需要查找浏览器中是否支持overflow-y:auto,因为我需要滚动div.
但是在安卓<3中,这种测试结果为真,表明其受支持,但在使用时,它的工作方式与预期不同,即div与

overflow-y:auto 
不滚动

是否有可靠的方法可以查看浏览器是否支持此属性。我使用Modernizer编写了这个测试,但它总是返回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;
modernizer.addTest('overflowauto',function(){
var bool=假;
var testProp=“溢出-y”;
var testVal=“自动”;
var styles=modernizer._前缀.join(testProp+“:“+testVal+”;”);
var-ret=真;
ret=modernizer.testStyles('#modernizer{'+styles+'}',函数(elem,rule){
for(var i=0;i
}))

但很明显,当我使用它时,它不起作用。 请告诉我一种可靠的方法,以确定该财产是否可以安全使用,或者我能做些什么。

您可以尝试以下方法:

Modernizr.addTest("overflowscrolling",function(){
    return Modernizr.testAllProps("overflowScrolling");
});
然后检查modernizer将插入DOM中
html
元素的
overflowscroling
no overflowscroling
类。这似乎适用于iOS和Android设备。(或者直接检查
modernizer.overflowscroling
的值。)

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


因此,这个测试可能并不完美,但它似乎对我所测试的所有我关心的用例都是正确的:所有现代桌面浏览器、最新的iPhone和Android 2.X设备。如果您需要支持更多的设备/浏览器,您必须测试这些设备/浏览器,并根据需要进行调整。

我自己刚刚处理过这个问题。我相信技术上支持溢出值,但渲染引擎选择像溢出:隐藏一样处理它们。我曾研究过通过javascript进行滚动,但很快就变得一团糟。我想现在唯一的方法是检测用户代理,并在overflow:auto和类似iscroll的东西之间进行选择。第二段专门讨论了Chrome的误报问题。