Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.06.2010, 16:54
Кандидат Javascript-наук
Отправить личное сообщение для SunnyDay Посмотреть профиль Найти все сообщения от SunnyDay
 
Регистрация: 22.09.2008
Сообщений: 111

Подмена addEventListener firefox.
Здравствуйте, мне необходимо подменить все вызовы функции addEventListener . Нужно это сделать из плагина firefox.
Пробовал так:
var _funcS = HTMLAnchorElement.prototype.addEventListener;
	HTMLAnchorElement.prototype.addEventListener = function(event, funci, bubble) {
			alert(1);
                     _funcS.call(this,event, funci, bubble); 
	};
document.getElementById('link').addEventListener("click", evecatch, false);//не работает


не выходит... Причём подмена любых других методов работает, например:
var funcSetAttr = HTMLAnchorElement.prototype.setAttribute; 
HTMLAnchorElement.prototype.setAttribute = function(name, value) {
   alert(name);
   funcSetAttr.call(this,name,value);
};
document.getElementById('link').setAttribute ("width", "100");//работает


Этот метод вообще можно подменить? Если да, то подскажите как?

Мне это нужно сделать, потому что я пытаюсь сделать 'чистую симуляцию' щелчка мышки initMouseEvent из под фаерфокс-плагина. Проблемма в том что initMouseEvent выдаёт не все аттрибуты объекта event, такими, которыми они должны быть на самом деле при щелчке, плюс фазы события идут неверно. Изменить я их никак не могу - 'not defined getter'. Либо есть какой-нибудь альтернативный способ сгенерировать событие с нужными мне параметрами?
Ответить с цитированием
  #2 (permalink)  
Старый 07.06.2010, 16:28
Кандидат Javascript-наук
Отправить личное сообщение для SunnyDay Посмотреть профиль Найти все сообщения от SunnyDay
 
Регистрация: 22.09.2008
Сообщений: 111

Похоже никто не знает. Может какието намёки, как полностью управлять объектом Event из фаерфокс-плагина? Ладно, придётся перекомпиливать фаерфокс.. Хотя в его исходниках чёрт ногу сломит)
Ответить с цитированием
  #3 (permalink)  
Старый 07.06.2010, 16:40
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

А просто пройтись по всем ссылкам и перезаписать метод?
И еще клик по ссылке может отлавливаться не с самой ссылки, а например так:
document.onclick = function (event) {
    event = event || window.event;
    var target = event.target || event.srcElement;
    if (target.nodeName.toUpperCase() == "A") {
       alert("Нажата ссылка");
       return false;
    }
};

Последний раз редактировалось Octane, 07.06.2010 в 16:44.
Ответить с цитированием
  #4 (permalink)  
Старый 07.06.2010, 17:12
Кандидат Javascript-наук
Отправить личное сообщение для SunnyDay Посмотреть профиль Найти все сообщения от SunnyDay
 
Регистрация: 22.09.2008
Сообщений: 111

Да, кстати так можно попробовать. Только есть пару факторов - там не только клик, там все мышиные события надо перехватывать это раз. А каким макаром предлагаешь, у каждой ссылки на событие создания делать чтото типа того?
link.addEventListener = function(event, funci, bubble) {
	            /*мой код*/         HTMLAnchorElement.prototype.addEventListener.call(this,event, funci, bubble);
};
link.onclick= function(event){
              /*мой код*/
              HTMLAnchorElement.prototype.onclick.call(this,event);
};

причем моя функция в любом случае должна выполняться первее чем, функции, созданные из дочернего документа....
Идею простая - нужно сделать симуляцию клика, неотличимую от реального клика, из под плагина фаерфокс. Последовательность симулировал, координаты симулировал, движения мыши от координат прошлого клика симулировал, а вот с объектом Event туго...
Ответить с цитированием
  #5 (permalink)  
Старый 07.06.2010, 18:45
Кандидат Javascript-наук
Отправить личное сообщение для SunnyDay Посмотреть профиль Найти все сообщения от SunnyDay
 
Регистрация: 22.09.2008
Сообщений: 111

В принципе рекомпил фаерфокса - это пока лучший вариант из тех что я придумал... Только в коде там чтобы банальные вещи сделать, нужно много копаться. Всем спасибо =)
Ответить с цитированием
  #6 (permalink)  
Старый 08.06.2010, 02:24
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

document.addEventListener( 'click', function( evt ){ исправляем evt }, true )
__________________
.ня
Ответить с цитированием
  #7 (permalink)  
Старый 08.06.2010, 18:04
Кандидат Javascript-наук
Отправить личное сообщение для SunnyDay Посмотреть профиль Найти все сообщения от SunnyDay
 
Регистрация: 22.09.2008
Сообщений: 111

Сообщение от tenshi Посмотреть сообщение
document.addEventListener( 'click', function( evt ){ исправляем evt }, true )
так точно непрокатит, проверь

document.addEventListener( 'click', function( evt ){ evt=null;}, true);
document.getElementById('link').addEventListener("click", evecatch, true);
function evecatch(evt){
	alert(evt);
};
Ответить с цитированием
  #8 (permalink)  
Старый 08.06.2010, 18:13
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

не заменить, а изменить..
__________________
.ня
Ответить с цитированием
  #9 (permalink)  
Старый 08.06.2010, 18:19
Кандидат Javascript-наук
Отправить личное сообщение для SunnyDay Посмотреть профиль Найти все сообщения от SunnyDay
 
Регистрация: 22.09.2008
Сообщений: 111

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
AJAX + Firefox некорректное отображение checkbox shu7 Firefox/Mozilla 2 26.06.2015 14:23
Peppy и Firefox Cr@ZyBoY Библиотеки/Тулкиты/Фреймворки 13 14.02.2010 20:38
Проблемы с MouseMove в FireFox slim-v Events/DOM/Window 5 05.06.2009 02:44
В Mozilla Firefox 3.0 проблемма с Javascript меню artmedia Элементы интерфейса 1 07.09.2008 10:43
FireFox: onmouseover не работает при зажатой кнопке мыши no. Общие вопросы Javascript 4 19.08.2008 13:43