Javascript 科尔多瓦:如何获得应用程序的宽度和高度?
我需要使用JavaScript为我的cordova android应用程序获取窗口的宽度和高度 我尝试了JQuery库中的Javascript 科尔多瓦:如何获得应用程序的宽度和高度?,javascript,android,jquery,cordova,Javascript,Android,Jquery,Cordova,我需要使用JavaScript为我的cordova android应用程序获取窗口的宽度和高度 我尝试了JQuery库中的$(window).width()和$(window).height(),但结果是喜怒无常的: 我正在Nexus7上测试,当我以纵向模式打开应用程序时,我得到宽度=600,高度=888 当我将设备旋转到横向并重新计算尺寸时,它们在本应交换时不会改变,当我将设备旋转回纵向时,我得到宽度=960,高度=528 我对这个输出感到非常困惑,它让我觉得我使用了错误的代码。我将非常感谢您
$(window).width()和$(window).height()
,但结果是喜怒无常的:
我正在Nexus7上测试,当我以纵向模式打开应用程序时,我得到宽度=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]);
}
尝试:
var w=窗内宽度;
var h=窗内高度;
我知道这在web浏览器上有效试试:
var w=窗内宽度;
var h=窗内高度;
我知道这在web浏览器上有效您必须处理事件:
当设备的方向发生更改时,将触发orientationchange事件
以及Window.orientation属性,该属性包含表示当前方向的数字(有关更多详细信息,请查看下图)
注意:window.orientation在桌面浏览器中返回未定义的。因此,请在模拟器或设备上进行测试
解决方案:
window.addEventListener(“方向更改”,方向更改);
函数方向更改(){
开关(窗口、屏幕、方向){
“景观小学”案例:
//这里的函数是:getDimensions();
打破
案例“主要肖像”:
//这里的函数是:getDimensions();
打破
违约:
打破
}
}
您必须处理事件:
当设备的方向发生更改时,将触发orientationchange事件
以及Window.orientation属性,该属性包含表示当前方向的数字(有关更多详细信息,请查看下图)
注意:window.orientation在桌面浏览器中返回未定义的。因此,请在模拟器或设备上进行测试
解决方案:
window.addEventListener(“方向更改”,方向更改);
函数方向更改(){
开关(窗口、屏幕、方向){
“景观小学”案例:
//这里的函数是:getDimensions();
打破
案例“主要肖像”:
//这里的函数是:getDimensions();
打破
违约:
打破
}
}
请发布您的代码好吗?我已经编辑了包含我的getDimensions()函数听起来像是在重画出现之前计算宽度和高度,从而在旋转之前计算窗口的宽度和高度。旋转后如何检测窗口重绘?编辑:在定向事件发生后,您是否尝试在回调中使用setTimeout进行检查?嗯……似乎还可以。我还在cordova应用程序中使用$(窗口)
,以获得高度和宽度。在哪里调用getDimensions?请发布您的代码好吗?我已经编辑了包含getDimensions()函数的函数听起来像是在重画出现之前计算宽度和高度,从而在旋转之前计算窗口的宽度和高度。旋转后如何检测窗口重绘?编辑:在定向事件发生后,您是否尝试在回调中使用setTimeout进行检查?嗯……似乎还可以。我还在cordova应用程序中使用$(窗口)
,以获得高度和宽度。你在哪里叫getDimensions?我对设备的方向不感兴趣。我只是想知道尺寸。您写道:“当我将设备旋转到横向并重新计算尺寸时,它们在本应交换时不会改变,而当我将设备旋转回纵向时,我得到的宽度=960,高度=528。”您必须检查每次方向更改时的尺寸,以获得正确的值。我尝试运行代码,但在“开关(e.orientation)”行--“无法读取未定义的属性“orientation”。我将其替换为window.screen.orientation。您也可以尝试。你是否将Croswalk绑定到你的应用程序中?我对设备定位不感兴趣。我只是想知道尺寸。您写道:“当我将设备旋转到横向并重新计算尺寸时,它们在本应交换时不会改变,而当我将设备旋转回纵向时,我得到的宽度=960,高度=528。”您必须检查每次方向更改时的尺寸,以获得正确的值。我尝试运行代码,但在“开关(e.orientation)”行--“无法读取未定义的属性“orientation”。我将其替换为window.screen.orientation。您也可以尝试。您是否将Croswalk绑定到应用程序中?