Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как запретить/перехватить событие keyDown которое передается из Flex в Javascript. (http://www.flasher.ru/forum/showthread.php?t=106162)

makanmel 04.01.2008 23:41

Как запретить/перехватить событие 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-объект, но в интернете не могу найти. Кто сталкивался с таким - подскажите.

Pieson 16.05.2008 08:52

Понимаю, что решение несколько запоздало, но может, кому пригодится:

Данная проблема связана с параметром wmode. Если установлен wmode=transparent или opaque, то IE, рассматривает флэшку как часть своего окошка, т.е. перехватывает все события от неё.

Решение: wmode=window


Часовой пояс GMT +4, время: 01:35.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.