在javascript中获得精确的物理移动分辨率

在javascript中获得精确的物理移动分辨率,javascript,css,mobile,browser,Javascript,Css,Mobile,Browser,我正在构建一个页面,向用户显示尽可能多的设备信息。对于移动设备,物理分辨率与浏览器解释的分辨率不同,因为否则高分辨率设备无法很好地显示页面 例如,我的Moto X风格的分辨率为1440 X 2560像素,甚至高于大多数PC显示器。它是按设备像素比例缩小的,在我的设备上设置为3.5。这使得“解释分辨率”为412 x 732像素 对于许多设备,将屏幕[宽度/高度]的解释分辨率乘以窗口.devicePixelRatio就足够了。然而,在我的例子中,这只是一个估计,结果是1442 x 2562,大概是因

我正在构建一个页面,向用户显示尽可能多的设备信息。对于移动设备,物理分辨率与浏览器解释的分辨率不同,因为否则高分辨率设备无法很好地显示页面

例如,我的Moto X风格的分辨率为1440 X 2560像素,甚至高于大多数PC显示器。它是按设备像素比例缩小的,在我的设备上设置为3.5。这使得“解释分辨率”为412 x 732像素

对于许多设备,将
屏幕[宽度/高度]
的解释分辨率乘以
窗口.devicePixelRatio
就足够了。然而,在我的例子中,这只是一个估计,结果是1442 x 2562,大概是因为四舍五入


有没有可靠的方法可以得到这个精确的值?或者可以抑制这些值的舍入?非常感谢您的任何想法。

您可以尝试此方法以获得当前设备的确切高度和宽度

var w = window.innerWidth;
var h = window.innerHeight;
查看此页面:

很明显,它会随着设备的不同而变化,但您的做法是正确的:

Math.round(screen.width||height*window.devicePixelRatio)

祝你好运。

我使用这些来获取浏览器窗口的宽度/高度

getWindowWidth: function() {
    if (true) {
        try {
            return document.documentElement.clientWidth;
        } 
        catch (error) {}
    } 
    else {
        try {
            return window.innerWidth;
        } 
        catch (error) {}
    }
    return 0;
},

getWindowHeight: function() {
    if (true) {
        try {
            return document.documentElement.clientHeight;
        } 
        catch (error) {}
    } 
    else {
        try {
            return window.innerHeight;
        } 
        catch (error) {}
    }
    return 0;
},

这些值不等于屏幕大小,而是窗口大小。如果你真的读过我的问题,你会发现我已经找到了屏幕尺寸。再说一遍,这对我并没有什么帮助。在这种情况下,我认为有必要使用screen.width/height,因为这是实际的屏幕,而不是窗口/文档尺寸。您可以获得这些
user\u-agent:navigator.userAgent.toLowerCase()
user\u-platform:navigator.platform.toLowerCase()
,并将它们与已知设备列表进行比较。如果您使用的是PHP或其他,您可以获得
$SERVER[“HTTP\u USER\u AGENT”]
并将其与列表进行比较。这里有一个指向一长串用户代理的链接。
screen.width
screen.height
我不想依赖这样的列表,因为市场上有这么多不同的手机。这样的清单不可能涵盖所有的电话。