Вопрос

Я работаю над простым игровым движком на Javascript (без ума, я знаю). Скриншот из Opera: http://img406.imageshack.us/img406 /5818/gamek.jpg Хотя он выглядит как движок плиток, на самом деле он основан на объектах; каждая строка или столбец серых блоков - это один < div > ;, расположенный относительно области просмотра (прямоугольник с красной рамкой). Область просмотра переполнена: скрыта, поэтому объекты не отображаются за ее пределами.

Тем не менее, Opera по-прежнему добавляет полные высоты этих объектов к общей высоте страницы, даже если большая ее часть обрезана. Это любопытно, потому что полоса прокрутки не отображается, а синий контур вокруг & Lt; html & Gt; элемент не перемещается вниз (и даже если я помещу его в элемент < body >). Но когда я нажимаю стрелку вниз, страница прокручивается вниз, пока нижняя часть этих объектов не окажется на экране, даже если они обрезаны. Я могу сказать, что это так, потому что удаление этих объектов решает проблему, и когда я перемещаюсь на юг в игре, страница прокручивается назад, так как объекты перемещаются назад и, таким образом, уменьшают высоту страницы.

Я использую Opera 10, но у меня была та же проблема с 9. Firefox прекрасно с ней справляется. Как бы я решить или обойти эту проблему? Никакая хитрость CSS, о которой я могу думать, не сделала этого, и вызов scroll (0,0) для каждого кадра еще хуже - страница переходит на & Quot; bottom & Quot; затем обратно наверх.

Это было полезно?

Решение

это известная ошибка в Opera, которую вы можете прокрутить до содержимого, которое должно быть переполнено: скрыто.

Теперь, если вы обработаете событие нажатие клавиши с помощью JavaScript и вызовите event.preventDefault () для нажатия клавиш со стрелками, это предотвратит прокрутку. (Не работает, чтобы предотвратить действие по умолчанию события keydown, должно быть нажатие клавиши). Это помогает?

Другие советы

Эта проблема также возникает в сафари? Если так, то это может быть специфический сбой WebKit.

Или, возможно, указание max-height для этого элемента может помешать этому объекту изменить размер окна вашего браузера.

Также неплохо было бы использовать исходный код =)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top