Javascript 为什么使用纵向时Modernizr.cssvhunit在iOS7中不起作用?

Javascript 为什么使用纵向时Modernizr.cssvhunit在iOS7中不起作用?,javascript,ios,modernizr,viewport-units,Javascript,Ios,Modernizr,Viewport Units,我正在尝试使用Modernizer来检测浏览器中是否支持视口单位 这是我的测试: if(!Modernizr.cssvhunit) { alert('viewport units are not supported'); } 我知道iOS7中不支持视口单位,所以这就是我需要回退的地方 当我在iOS7中以横向方向在iPad上加载页面时,会执行警报 但是,如果我以纵向加载页面,我看不到警报 为什么这种条件只适用于景观?这是Modernizer的一个已知错误吗?我没有答案,但我找到了另一个解

我正在尝试使用Modernizer来检测浏览器中是否支持视口单位

这是我的测试:

if(!Modernizr.cssvhunit) {
    alert('viewport units are not supported');
}
我知道iOS7中不支持视口单位,所以这就是我需要回退的地方

当我在iOS7中以横向方向在iPad上加载页面时,会执行警报

但是,如果我以纵向加载页面,我看不到警报


为什么这种条件只适用于景观?这是Modernizer的一个已知错误吗?

我没有答案,但我找到了另一个解决方案

我为cssvmaxunit添加了一个测试,该条件在纵向和横向两种情况下都有效

// if viewport units aren't supported
if(!Modernizr.cssvhunit || !Modernizr.cssvmaxunit) {
    alert('viewport units are not supported');
}

我认为如果浏览器不支持vmax,那么它可能不支持vh。

iOS7在视口单位方面有问题。特别是视口高度。 CanIUse.com还列出了这种错误行为:

iOS7中的部分支持是由于vh单元的错误行为造成的


iOS8对视口单位的支持非常好,但有一个缺点。Modernizer表示,iOS8 Safari不支持VHU,尽管它支持VHU。但现在似乎有问题要解决。

我自己也有同样的问题,设法找到了一个好的解决方案。有一个小脚本可以检测到这种奇怪的中间支持,并将一个类放在html上。工作原理与现代化完全相同