Страница прокрутки Opera к невидимым элементам - PullRequest
1 голос
/ 12 сентября 2009

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

, расположенный относительно области просмотра (прямоугольник с красной рамкой). Область просмотра переполнена: скрыта, поэтому объекты за ее пределами не отображаются.

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

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

Ответы [ 2 ]

0 голосов
/ 18 ноября 2010

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

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

0 голосов
/ 14 сентября 2009

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

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

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

...