我正在使用Javascript中的简单游戏引擎(疯狂,我知道。)来自Opera的屏幕截图: http://img406.imageshack.us/img406 /5818/gamek.jpg 虽然它看起来像一个tile引擎,但它实际上是基于对象的;灰色块的每行或每列是单个<!> lt; div <!> gt;,相对于查看区域(具有红色边框的框)定位。观察区域有溢出:隐藏,因此对象不会显示在外面。

然而,Opera仍然将这些对象的完整高度添加到总页面高度,即使它的大部分被剪裁。这很奇怪,因为没有滚动条显示,并且<!> lt; html <!> gt周围的蓝色轮廓; element不会向下移动(也不会将它放在<!> lt; body <!> gt;元素上)。但是当我按下向下箭头时,页面向下滚动,直到这些对象的底部出现在屏幕上,即使它们被剪裁了。 我可以说是这种情况,因为移除这些对象可以解决问题,当我在游戏中向南移动时,页面会向上滚动,因为对象会向上移动,从而降低页面高度。

我正在使用Opera 10,但遇到了同样的问题9. Firefox处理它就好了。我如何解决或解决这个问题?我无法想到的CSS技巧已经完成了,并且每帧调用scroll(0,0)更糟糕 - 页面跳转到<!> quot; bottom <!>“;然后回到顶部。

有帮助吗?

解决方案

这是Opera中的一个已知错误,你可以滚动到溢出的内容:隐藏。

现在,如果您使用JavaScript处理 keypress 事件并调用event.preventDefault()按箭头键,则会阻止滚动。 (无法阻止keydown事件的默认操作,必须是按键)。这有帮助吗?

其他提示

这个问题是否也出现在safari中?如果是这样,它可能是一个特定于WebKit的故障。

或者为该元素指定max-height可能会阻止该对象调整浏览器窗口的大小。

源代码也很好=)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top