我的手机游戏必须包含在iframe
内。游戏页面本身的代码大小适合屏幕正常,iframe
的要求是新的。
游戏页面使用由div
包围的画布,在使用JS缩放以适应屏幕大小(保持其宽高比)后,使用JS来填充画布周围的空间。每隔几秒就会调用一次,以确保它仍然正确。如果不在iframe
内,这已经工作了一段时间。
我现在把游戏放在iframe
内,设置为填满屏幕。这在桌面和Android Chrome上运行良好,但iPad Air上的iOS 7 Safari似乎有问题。每次调用大小更新函数并且顶部边框扩展时,游戏向下移动4px。这似乎正在发生,因为window.innerHeight
在游戏框架内越来越大。但是,iframe
的大小不会改变。
如果iframe
本身的大小没有变化,会导致window.innerHeight
变更iframe
的原因是什么?我觉得某些游戏代码可能会导致更改,但我无法追踪到哪一位,因为我认为window.innerHeight
可能无法没有调整窗口大小就改变了。我已经为游戏添加了一个调整大小的侦听器,它确实以与调整更新相同的速率触发,因此我假设其中的某些内容导致window.innerHeight
增加。
我不确定这是否相关,但似乎确实稳步增加到1024px,此时它会停止增加。这与window.innerWidth
更新:刚刚在iPhone 5上尝试了相同的代码,并且遇到了同样的问题,但innerHeight
和innerWidth
的结束值是783和568。