
13.07.2009, 14:38
|
 |
Модератор Всея Форума
|
|
Регистрация: 14.05.2009
Сообщений: 4,021
|
|
|
Объект event создаётся при срабатывании обработчика, поэтому невозможно прослушивать window, ожидая вызова обработчика и тем более получить тело ф-ции (если обработчик добавлен через методы DOM).
|
|

13.07.2009, 14:41
|
 |
Модератор Всея Форума
|
|
Регистрация: 14.05.2009
Сообщений: 4,021
|
|
|
Разве что все выполняемые ф-ции будут сами себя регистрировать и добавлять в с писок.
|
|

13.07.2009, 14:58
|
|
Кандидат Javascript-наук
|
|
Регистрация: 22.09.2008
Сообщений: 111
|
|
|
Понятно.. Тоесть нельзя? Значит будем тыкать пальцем в небо)
|
|

13.07.2009, 15:34
|
|
Кандидат Javascript-наук
|
|
Регистрация: 22.09.2008
Сообщений: 111
|
|
|
Вся проблемма в принципе в том что у меня не получается ссимулировать событие - тоесть к примеру по щелчку левой кнопки мышки что либо происходит. Пытаюсь вызвать это событие:
так
doc.getElementById('element').click();
и так (там используется jQuery)
$('#element').click();
действие не выполняется
Может быть вы подскажете, в чём может быть проблемма?
|
|

13.07.2009, 15:51
|
 |
Модератор Всея Форума
|
|
Регистрация: 14.05.2009
Сообщений: 4,021
|
|
|
Сообщение от SunnyDay
|
doc.getElementById('element').click();
|
Не есть метод узла. Для генерирования события скриптом используются методы DOM:
Для Gecko
var evt = new Event;
evt.initEvent('click', true, true);
document.body.dispatchEvent(evt);
Для ИЕ:
var evt = document.createEventObject();
document.body.fireEvent('onclick', evt);
Про jQuery ничего сказать не могу.
Последний раз редактировалось B~Vladi, 13.07.2009 в 15:56.
|
|

13.07.2009, 16:24
|
|
Кандидат Javascript-наук
|
|
Регистрация: 22.09.2008
Сообщений: 111
|
|
B~Vladi,
спасибо большое! у меня все работает, сделал так -
var evObj = doc.createEvent('MouseEvents');
evObj.initEvent('click', true, true);
ellinat.dispatchEvent(evObj);
Последнее, не подскажите как сделать так чтобы кликало правой кнопкой мышки, а не левой?
|
|

13.07.2009, 16:56
|
 |
Модератор Всея Форума
|
|
Регистрация: 14.05.2009
Сообщений: 4,021
|
|
|
Сообщение от SunnyDay
|
var evObj = doc.createEvent('MouseEvents');
evObj.initEvent('click', true, true);
ellinat.dispatchEvent(evObj);
|
Это не будет работать в ИЕ. Нужно создать кросс-браузерную ф-цию:
function xInitEvt(e,type){
if(e.initEvent&&e.dispatchEvent){
var evt = e.createEvent('MouseEvents');
evt.initEvent(type, true, true);
e.dispatchEvent(evt);
}else{
var evt = document.createEventObject();
document.body.fireEvent(type, evt);
}
}
И ею пользоваца...
Про левую кнопку пока не знаю... нада смотреть... Но в любом случае это не кроссбраузерный вариант + это, например, в Опере, можно отключать.
|
|

13.07.2009, 17:02
|
|
Кандидат Javascript-наук
|
|
Регистрация: 22.09.2008
Сообщений: 111
|
|
Понятно, спасибо.
Насчёт кнопки - попробовал заменить метод
evObj.initEvent('click', true, true);
на частный метод
evObj.initMouseEvent('click', true, true, doc.defaultView, 1, 1, 1, 1, 1, false, false, false, false, 2, null);
где предпоследний параметр - номер кнопки мышки, всёравно кликает левой. Ладно, дальше уже попробую сам заставить кликать правой
|
|

13.07.2009, 17:05
|
 |
Модератор Всея Форума
|
|
Регистрация: 14.05.2009
Сообщений: 4,021
|
|
|
Сообщение от SunnyDay
|
|
всёравно кликает левой
|
Мда, странно... пробуй в разных браузерах... Сам я так не заморачивался, т.к. ненадёжно...
|
|

13.07.2009, 17:15
|
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
SunnyDay,
http://testcase.rubyforge.org/ru/docs/events здесь покопайтесь. А может даже и раскапывать не придется, самой библиотекой можно воспользоваться.
|
|
|
|