1

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

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

我正在使用 Opera 10,但在 9 中遇到了同样的问题。Firefox 处理得很好。我将如何解决或解决这个问题?我能想到的任何 CSS 技巧都没有做到这一点,而且每帧都调用 scroll(0,0) 更糟——页面跳到“底部”,然后又回到顶部。

4

2 回答 2

0

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

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

源代码也很好=)

于 2009-09-14T04:32:45.160 回答
0

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

现在,如果您使用 JavaScript 处理keypress事件并调用 event.preventDefault() 以进行箭头键按下,它将阻止滚动。(不能阻止 keydown 事件的默认操作,必须是 keypress)。这有帮助吗?

于 2010-11-18T03:25:37.887 回答