Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   перехват событий (https://javascript.ru/forum/events/5250-perekhvat-sobytijj.html)

Раман 30.09.2009 01:00

перехват событий
 
Здравствуйте, у меня такая проблема. Не работает в IE captureEvents(Event.событие)
что делать?

Riim 30.09.2009 03:02

Цитата:

Сообщение от Раман
что делать?

устроить протест у офиса мелкомягких.

Роман 30.09.2009 22:59

Лучше убить била гейтса! Может тогда ихний браузер начал бы придерживаться стандартов
 
Ну а реально кто знает как сделать что бы работало в ие?

B~Vladi 01.10.2009 10:31

Цитата:

Сообщение от Роман
Ну а реально кто знает как сделать что бы работало в ие?

В ишаке реализован немного другой механизм. Я его ковырял, но так и не понял, как он работает. Может у кого получиться разобраться:

Метод setCapture включает перехват всех событий, генерируемых мышью. Если его аргумент flag равен true (принято по умолчанию), то данный элемент будет перехватывать все события мыши в пределах всего документа. Если аргумент равен false, то данный элемент будет перехватывать только события мыши от содержащихся внутри него элементов. Включение перехвата событий мыши запрещает выбор текста и перетаскивание (drag-and-drop) в окне обозревателя.

Метод releaseCapture отключает перехват событий мыши, включенный методом setCapture.

Это методы DOM-элемента.

Раман 01.10.2009 12:43

Значит только событие мыши он перехватыает? А мне нужно что бы перехватывало собтие OnContextMenu. А оно еще срабатыает с клавиши клаиатуры appKey

B~Vladi 01.10.2009 13:01

По поводу контекстного меню - насколько я знаю, кроссбраузерно его нельзя обработать.

B~Vladi 01.10.2009 13:06

Цитата:

Сообщение от Раман
Значит только событие мыши он перехватыает?

Непонятно, что он перехватывает... 8-ой ишак, если в setCapture передать true, то он не только перехватывает в пределах body, но и вообще во всём окне:blink:
Т.е. если мы напишем так:
var capture=function(){
alert('Fuck');
document.body.setCapture(true);
}
document.body.onclick=capture;
document.body.setCapture(true);

, то всё окно окужется недоступным. Вернуть его можно только сменив фокус на другое (alt+tab, например). Но это до первого клика по body...

После первого перехвата - перехват отменяется.

Раман 01.10.2009 15:02

Спасибо дружище!!! Я разобрался и сделал то что хотел, вот только осталась одна проблемка. В опере на событие oncontextmenu нету некакойревкции так что перехватывать в ней нечего не получится. Я вот предумал оперу поймать по другому перехватом тех действий точнее тех клавишь которые отвечают за контекстное меню то есть правая кнопка мыши и клавиша appKey. Правую кнопку я уже поймал а вот теперь не знаю как с клавишей на клавиатуре поступить гуглил но так и не смог найти какое событие занее отвечает. У тебя нет случайно некакихидей по этому поводу?

e1f 01.10.2009 15:11

В Опере с контекстным меню все плохо:
1. Юзер в настройках должен выставить "разрешить перехват правой кнопки" (по умолчанию -- нельзя).
2. Контекстное меню все равно будет появлятся.

B~Vladi 01.10.2009 15:11

По поводу oncontextmenu в опере - в настройках есть пункт "разрешать контроллировать правую кнопку мыши", который по-умолчению отключен и вряд ли включен у кого-то.

По поводу клавиши appKey - что конкретно надо?! Незнаешь её код?! Я тоже;)


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