Предотвратить прокрутку в IE, когда вспышка имеет фокус - PullRequest
3 голосов
/ 30 мая 2011

У меня есть веб-страница, где пользователи могут играть во флеш игры.Сейчас мы вносим некоторые изменения в страницу, требующие встраивания игр с wmode=transparent или wmode=opaque, чтобы мы могли отображать элементы HTML поверх флэш-игр.Проблема в том, что в Internet Explorer (во всех версиях) прокручивается вся страница, если пользователь нажимает клавиши со стрелками вверх / вниз.Я перепробовал все, что мог придумать, и потратил целый день на поиски решения, но безуспешно.

До сих пор я пытался поместить игру в iframe и отключил вверх / внизключи с JS, ни один из которых не решает мою проблему.

Требования следующие: wmode должен быть transparent или opaque, а я не могу изменить флеш-игры.

Ответы [ 4 ]

1 голос
/ 31 мая 2011

Единственный способ предотвратить прокрутку при использовании wmode=transparent во Flash - это предотвратить прокрутку с помощью клавиш со стрелками для всей страницы. Эта страница суммирует это лучше всего.

В основном, когда активен режим transparent, события клавиатуры в IE передаются в браузер; Я не знаю, как предотвратить прокрутку (не проверял), но в основном вам нужно было бы запретить глобальную прокрутку клавиатуры.

Это обсуждение выделяет возможный обходной путь для IE8 и пример реализации с использованием jQuery здесь . У меня сейчас нет копии IE, но, возможно, стоит попробовать.

AFAIK, однако, игры во Flash обычно не очень хорошо работают с wmode=transparent, так как фокус может быть украден без взаимодействия с пользователем. Лучше всего будет переделать страницу так, чтобы во Flash не требовалось наложение HTML (даже YouTube избегает установки transparent на своей странице и владеет всем контентом).

0 голосов
/ 01 июня 2011

Кажется, что просто нет пути к этому. Мы просто должны принять тот факт, что HTML-контент (в нашем случае, например, FB, как чат) будет скрываться за флэш-играми.

Но я все еще надеюсь, что кто-то докажет, что я не прав:)

0 голосов
/ 31 мая 2011

Как насчет магии JS, если она работает?

http://api.jquery.com/keypress/

http://api.jquery.com/event.preventDefault/

Зарегистрируйте обработчик событий KeyPress для тегов объекта / встраивания. Допустим, у вас есть объект flash с идентификатором # flashobj

$ ('# flashobj'). Нажатие клавиши (функция (событие) {event.preventDefault ();});

Или, что еще сложнее, если привязка к flash-объекту / embed не сработает, вы можете привязать нажатие клавиши ко всему окну и проверить что-то вроде:

if (event.target.tagName.toLower () == "object") ...

Пробег может меняться, насколько я помню, event.target не очень надежен ...

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

0 голосов
/ 30 мая 2011

Пользователь должен сначала сфокусировать флэш-ролик, прежде чем какие-либо ключевые действия будут перехвачены. На самом деле это хорошее поведение, и его нельзя менять.

Было бы хорошей идеей попросить пользователя добровольно сфокусировать фильм, возможно, поместив на него небольшую кнопку «Пуск», которую нужно сначала нажать. Затем все ключевые действия должны быть отправлены во Flash.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...