科尔多瓦:如何获得应用程序的宽度和高度?

时间:2016-01-13 18:35:09

标签: javascript android jquery cordova

我需要使用JavaScript来获取我的cordova android应用程序窗口的宽度和高度。

我已经尝试过JQuery库中的$(window).width() and $(window).height(),但结果很不稳定:

我在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]);
}

2 个答案:

答案 0 :(得分:0)

尝试:     var w = window.innerWidth;     var h = window.innerHeight; 我知道这适用于网络浏览器

答案 1 :(得分:0)

您必须使用orientationchange 事件

  

当设备的方向发生变化时会触发orientationchange事件。

Window.orientation 属性,其中包含代表当前方向的数字(有关详细信息,请查看下面的图片)。

window.orientation values

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

解决方案:

  1. orientationchange 事件附加到全局窗口对象。
  2. 检查方向值并在其中执行一些逻辑。
  3. 
    
    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;
      }
    }