Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 04.01.2008, 23:41
makanmel вне форума Посмотреть профиль Отправить личное сообщение для makanmel Найти все сообщения от makanmel
  № 1  
Ответить с цитированием
makanmel
[+4 15.11.07]
 
Аватар для 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-объект, но в интернете не могу найти. Кто сталкивался с таким - подскажите.

Старый 16.05.2008, 08:52
Pieson вне форума Посмотреть профиль Отправить личное сообщение для Pieson Найти все сообщения от Pieson
  № 2  
Ответить с цитированием
Pieson

Регистрация: Jul 2005
Адрес: Russia, Barnaul
Сообщений: 1
Отправить сообщение для Pieson с помощью ICQ
Понимаю, что решение несколько запоздало, но может, кому пригодится:

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

Решение: wmode=window

Создать новую тему Ответ Часовой пояс GMT +4, время: 23:20.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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