Cordova:如何获得应用程序的宽度和高度?

Cordova:如何获得应用程序的宽度和高度?

问题描述:

我需要使用JavaScript来获取我的科尔多瓦android应用程序的窗口的宽度和高度。Cordova:如何获得应用程序的宽度和高度?

我试图从$(window).width() and $(window).height() jQuery库,但结果是喜怒无常:

我测试在Nexus 7,当我在纵向模式下打开的应用程序,我得到宽度= 600,高度= 888

当我旋转设备,以景观和重新计算的尺寸不改变的时候,他们应该换,当我旋转设备来备份到人像我得到宽度= 960,高度= 528

我很迷茫通过这个输出,它让我觉得我使用了错误的代码。我会非常感谢您的帮助或建议。

这里是用于获取屏幕尺寸的功能:

function getDimensions() { 
    //Gets height and width of web browser 
    var height = $(window).height(); 
    var width = $(window).width(); 

    //Stores dimensions in array of form [width,height] 
    var dimensions = [width,height]; 

    return dimensions; 
} 

这里就是我检查尺寸旋转后:

function onOrientationChange() { 
    var dimensions = getDimensions(); 
    console.log("rotation width " + dimensions[0] + " height " + dimensions[1]); 
} 
+1

你能发布您的代码吗? – erikscandola

+0

我编辑过,以包含我的getDimensions()函数 – shakety

+0

听起来就像您在重绘出现之前计算宽度和高度,导致旋转之前窗口的宽度和高度。旋转后如何检测窗口重绘?*编辑*:您是否尝试在定向事件发生后使用setTimeout在回调中进行检查? – Samsinite

尝试: 变种W = window.innerWidth; var h = window.innerHeight; 我知道这个工程上的Web浏览器

+0

这给出了与上面的代码相同的响应 – shakety

你必须与orientationchange事件工作:

当设备的方向已经改变orientationChange事件被触发。

而且包含代表当前方位(查看下面有详细介绍图片)了一批Window.orientation财产。

window.orientation values

通知!:window.orientation在桌面浏览器中返回undefined。所以请在模拟器或设备上测试。

解决方案:

  1. 附加orientationchange事件的全局窗口对象。
  2. 检查方向值并在那里做一些逻辑。

window.addEventListener("orientationchange", orientationChange); 
 

 
function orientationChange() { 
 
    switch (window.screen.orientation) { 
 
    case "landscape-primary": 
 
     //your function over here: getDimensions(); 
 
     break; 
 
    case "portrait-primary": 
 
     //your function over here: getDimensions(); 
 
     break; 
 
    default: 
 
     break; 
 
    } 
 
}

+0

我对设备方向不感兴趣。我只想知道尺寸。 – shakety

+0

您写下了这篇文章:“当我将设备旋转到横向并重新计算它们应该交换时它们不会改变的尺寸,并且当我将设备旋转回纵向时,我得到width = 960,height = 528。” –

+0

你必须检查每个方向变化的尺寸以获得正确的值 –