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 - что конкретно надо?! Незнаешь её код?! Я тоже;)

Раман 01.10.2009 18:06

в 10 опере упраление праой кнопкой уже стоит по умоланию. А насчет appKey код у нее 93 вот только не хочет срабатыать в опере. Вот это например OnKeyDown="alert(event.keyCode)" Не показыает ничего не в опере не в хроме гуглоском а в ИЕ и Наигаторе работает мозилу не пробывал. Почему не работает?

B~Vladi 02.10.2009 10:16

На что событие вешаешь?!

Раман 02.10.2009 18:28

на body вешаю. Ксатати а не может быть что бы сам браузер моросил? ИЕ кстати часто любит это делать, после частых перезагрузок на однойстранице, но только после того как пезагрузишь комп все нррмально продолжает работать. Может и здесь такая же бодяга? Ну хотя я установил более низкую версию оперы стало появляца окошко, но вот только не на все клавиши срабатывало, а потом и вовсе не стало работать.

x-yuri 04.10.2009 05:47

Цитата:

Сообщение от Раман
ИЕ кстати часто любит это делать, после частых перезагрузок на однойстранице, но только после того как пезагрузишь комп все нррмально продолжает работать.

а что такое частые перезагрузки на одной странице? Нажать F5 до упора?

Раман 04.10.2009 21:19

:-)) шутник. Нет это когда ты пишишь какой не будь код ипостоянно его проаеряешь в браузере обновляя его тем самым - это и есть частые обновления на одной странице

x-yuri 04.10.2009 22:17

не знаю, не было у меня такого ни в одном браузере. Правда в ie я обычно по нужде :) залажу :D
p.s. Смейся, и весь мир будет смеяться вместе с тобой. Плачь, и будешь плакать в одиночестве...

Раман 06.10.2009 09:28

Да я тоже им только по нужде пользуюсь. Ну так что с ответом кто не будь знает как это осуществить в оперере?

x-yuri 06.10.2009 09:36

http://javascript.ru/forum/events/22...f-i-opere.html


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