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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 26.11.2012, 11:37
DaFive вне форума Посмотреть профиль Отправить личное сообщение для DaFive Посетить домашнюю страницу DaFive Найти все сообщения от DaFive
  № 1  
Ответить с цитированием
DaFive
 
Аватар для DaFive

Регистрация: May 2008
Адрес: {0,0}
Сообщений: 754
Записей в блоге: 1
Отправить сообщение для DaFive с помощью ICQ
Question HTML-компонент и получение элементов страницы

Товарищи, каким образом можно получить html-элемент во флексовском компоненте HTML, на который я навел курсор или по которому кликнул. Причем если я ткнул по ссылке в загруженной странице - запретить переход по ней и так же получить, скажем, её id или class?

Понятно, что можно обратиться к элементу, если я знаю его класс. Но если он мне неизвестен (адрес страницы каждый раз разный) - тут уже хуже. Ткните куда гуглить или где почитать, пожалуйста.
__________________
Кодинг, багинг, алгоритминг. me @

Старый 26.11.2012, 12:34
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 2  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Запретить переход можно перехватив событие locationChanging у его htmlLoader.
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 26.11.2012, 12:36
DaFive вне форума Посмотреть профиль Отправить личное сообщение для DaFive Посетить домашнюю страницу DaFive Найти все сообщения от DaFive
  № 3  
Ответить с цитированием
DaFive
 
Аватар для DaFive

Регистрация: May 2008
Адрес: {0,0}
Сообщений: 754
Записей в блоге: 1
Отправить сообщение для DaFive с помощью ICQ
alatar, спасибо за наводку.
Вопрос с получением элементов пока открыт.
__________________
Кодинг, багинг, алгоритминг. me @

Старый 26.11.2012, 12:44
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 4  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Не экспериментировал, но можно как в display list подписаться у body на capture фазу мышиных событий, отлавливать все объекты и проверять их id и class.
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 26.11.2012, 14:00
DaFive вне форума Посмотреть профиль Отправить личное сообщение для DaFive Посетить домашнюю страницу DaFive Найти все сообщения от DaFive
  № 5  
Ответить с цитированием
DaFive
 
Аватар для DaFive

Регистрация: May 2008
Адрес: {0,0}
Сообщений: 754
Записей в блоге: 1
Отправить сообщение для DaFive с помощью ICQ
Вах, что получается.
После загрузки контента - получаем body страницы. Пока для теста присвоил всему чему можно mousemove, даже трейсит.
Код AS3:
<mx:HTML id="myhtml" x="0" y="0" width="100%" height="100%" location="http://localhost/test.html" complete="makeListeners();"/>
 
private function makeListeners():void {
     trace("BODY: "+myhtml.domWindow.document.body);
     var body:* = myhtml.domWindow.document.body;
 
     for (var prop:String in body) {
          try {
             var testLink:Object = body[prop];
          	if(testLink.innerHTML != '') {
	            testLink.addEventListener("mousemove", onMouseMove)	
          	}
         } catch(e:Error) {}
     }
}
 
private function onMouseMove(evt:MouseEvent):void {
      trace(evt.target.innerHTML);
}
Но попахивает кривым костылём. Буду дальше ковырять.
__________________
Кодинг, багинг, алгоритминг. me @

Старый 26.11.2012, 14:14
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 6  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Попробуй так:
Код AS3:
<mx:HTML id="myhtml" x="0" y="0" width="100%" height="100%" location="http://localhost/test.html" htmlDOMInitialize="makeListeners();"/>
 
private function makeListeners():void {
     var body:Object = myhtml.domWindow.document.body;
 
     body.addEventListener("mousemove", onMouseMove, true);
}
 
private function onMouseMove(evt:MouseEvent):void {
      trace(evt.target.innerHTML);
}
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 26.11.2012, 14:21
DaFive вне форума Посмотреть профиль Отправить личное сообщение для DaFive Посетить домашнюю страницу DaFive Найти все сообщения от DaFive
  № 7  
Ответить с цитированием
DaFive
 
Аватар для DaFive

Регистрация: May 2008
Адрес: {0,0}
Сообщений: 754
Записей в блоге: 1
Отправить сообщение для DaFive с помощью ICQ
Не, не стреляет, пробовал. Говорит:
Код AS3:
Type Coercion failed: cannot convert __HTMLScriptObject@2fa6d91 to flash.events.MouseEvent.
То есть не всему можно MouseMove назначить, походу. Если оставить обработчик события без явного указания MouseEvent типу события - результат одинаков с моим.

То бишь трейсит все, вплоть до функций, объявленных в тегах <script>.

Цитата:
<script>
function test() {
alert('test');
}
</script>
<a href="#" class="hr">test</a>
А когда наводишь непосредственно на ссылку - выводит test, то есть innerHTML.
По сути код рабочий, осталось разграничить объекты, которым этот mousemove надо цеплять.

Добавлено через 18 минут
Ха, подбираемся к истине. Нашел решение, которое, в принципе, меня устраивает на текущий момент времени.
Опять же подписываем html на complete, далее берем код alatar. И в обработчике указываем что трейсить конкретно.

Код AS3:
private function makeListeners():void {
    var body:Object = myhtml.domWindow.document.body;
    body.addEventListener("mouseover", onMouseMove, true);
}
 
private function onMouseMove(evt:*):void {
   if(evt.target.tagName != 'BODY') {
	trace(evt.target.outerHTML);	
   }				
}
На выходе получаем что-то вроде:
Цитата:
<a href="#" class="hr">test</a>
<div>test123</div>
alatar, спасибо за участие.
__________________
Кодинг, багинг, алгоритминг. me @


Последний раз редактировалось DaFive; 26.11.2012 в 14:43.
Старый 26.11.2012, 16:21
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 8  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Цитата:
То есть не всему можно MouseMove назначить, походу.
Скопипастил и не посмотрел. Классы событий не совпадают (что естественно), вместо Event следует использовать Object. К чему ты собственно уже и пришел
__________________
משיח לא בא
משיח גם לא מטלפן

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

Теги
click , event , flex , html
Опции темы
Опции просмотра

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

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


 


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


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