Показать сообщение отдельно
Старый 04.01.2008, 23:41
makanmel вне форума Посмотреть профиль Отправить личное сообщение для makanmel Найти все сообщения от makanmel
  № 1  
Ответить с цитированием
makanmel
 
Аватар для makanmel

Регистрация: Dec 2006
Адрес: Lviv
Сообщений: 34
Отправить сообщение для makanmel с помощью ICQ Отправить сообщение для makanmel с помощью Skype™
По умолчанию Как запретить/перехватить событие keyDown которое передается из Flex в Javascript.

На HTML странице есть Flex-приложение. Как при нажатии PgUp/PgDn в этом приложении запретить дальнейшую передачу соответствующего события в браузер, или хотя бы как-то его перехватить в Javascript?
Это нужно для того, что бы при работе с Flex-приложением, в котором на эти клавиши назначены определенные действия, браузер не прокручивал страницу.

Пробовал во Flex делать так (проверку на код кнопки не привожу):
Код:
protected function onKeyDown(event:KeyboardEvent) : void
{
  event.preventDefault();
  event.stopPropagation();
  event.stopImmediatePropagation();
}
А в Javascript делал так:
Код:
window["flexObject"].onkeydown = keydown;
function keydown(event)
{
  if (!event) event = window.event;
  if (event.preventDefault) event.preventDefault();
  if(event.stopPropagation) event.stopPropagation();
  event.cancelBubble=true;
  return false;
}
Не работает. Причем если обработчик keydown повесить на HTML документ:
Код:
window.onkeydown = document.onkeydown = keydown;
И нажимать кнопки, когда фокус не на Flex-приложении, то все работает нормально (страница не прокручивается).

Еще пробовал повесить обработчик в Javascript на событие scroll:
Код:
window.onscroll = document.onscroll = scroll;
function scroll(event)
{
  document.body.scrollTop = 0;	
}
Так работает, только заметно, как окно мелко так и неприятно подергивается несколько раз - то есть тоже не подходит.

Что делать - не знаю. Догадываюсь, что можно как-то повесить обработчик события keyDown в Javascript на flash-объект, но в интернете не могу найти. Кто сталкивался с таким - подскажите.