在Firefox中将window.innerHeight乘以非全数字时出现意外结果

时间:2012-06-04 21:15:35

标签: javascript html firefox unity3d

首先,我绝不是网页设计师,所以我对我正在做的事情一无所知。

我正在为Unity Webplayer应用程序开发HTML / Javascript,试图让Webplayer占用浏览器的大部分(不是全部)可视区域。页面的<body>设置为没有边距,也没有滚动条,

<body margin="0" marginwidth="0" marginheight="0" scroll="no">

我正在获取浏览器可视区域的值,如下所示,

winWidth = window.innerWidth;
winHeight = window.innerHeight;

我用Unity调用Unity Webplayer,

unityObject.embedUnity("unityPlayer", "WebPlayer.unity3d", winWidth, winHeight, params);

使用此设置,一切似乎都能正常工作。但是,当我将winWidthwinHeight乘以非整数(即0.5或1.9)时,在Firefox 12中未正确缩放高度。无论我放在那里的价值如何,它始终是垂直高度相同(错误)。在这张图片中,innerHeightinnerWidth都乘以0.9,正如您所看到的,高度肯定是错误的 - 这是我得到的错误高度,无论是什么非整体数字乘以它。 innerHeight * 0.9

此代码在Chrome 19和IE 9中运行良好。如何解决此问题?

1 个答案:

答案 0 :(得分:1)

我不知道确切的情况是什么,因为我不熟悉您正在使用的Unity JavaScript界面​​,但我认为您很有可能需要为播放器指定整数宽度和高度,而你的计算产生一个非整数。

只需编写Math.round(winWidth * 0.9)而不是winWidth * 0.9即可获得最接近的整数结果。