10

如何检测运行 Windows Phone 8 的 HiDPI 设备?

我正在测试的手机是诺基亚 Lumia 920,它有一个 4.5 英寸的 1280 × 768 屏幕(即 > 300 dpi)。IE 支持min-resolutionCSS 但不支持min-device-pixel-ratio. 使用此设备像素密度测试,Lumia 报告96 dpi。这远低于实际的屏幕分辨率,将被视为普通的非 HiDPI 设备。

由于 IE(尚)不支持window.devicePixelRatioJavaScript,我无法找到一种方法来准确检测 Lumia 是否能够显示 HiDPI 图像。

4

1 回答 1

8

查看http://timkadlec.com/2013/01/windows-phone-8-and-device-width/

理论上(我没有手机可以对此进行测试),如果您将以下所有内容添加到您的页面,您应该被授予为 Windows Phone 8 和 Windows 8 设备获取有效 DPR 的能力。

HTML 元视口(当前/旧版非 W3C 实现)

<meta name="viewport" content="width=device-width" /> 

CSS @viewport(当前/未来的 W3C 草案实现):

@-webkit-viewport{width:device-width}
@-moz-viewport{width:device-width}
@-ms-viewport{width:device-width}
@-o-viewport{width:device-width}
@viewport{width:device-width}

用于禁用 Windows Phone 8 中元视口的古怪 @viewport 覆盖的 Javascript:

if (navigator.userAgent.match(/IEMobile\/10\.0/)) {
    var msViewportStyle = document.createElement("style");
    msViewportStyle.appendChild(
        document.createTextNode(
            "@-ms-viewport{width:auto!important}"
        )
    );
    document.getElementsByTagName("head")[0].
        appendChild(msViewportStyle);
}

然后screen.width/document.documentElement.clientWidth应该是正确实现 screen.widthwindow.devicePixelRatio的所有移动浏览器的有效近似值

于 2013-02-02T04:16:04.130 回答