onkeyup при задействане за модифициращи клавиши

Изглежда не мога да използвам събитието onkeyup, за да открия надеждно кога модифициращите клавиши, по-специално клавишът Alt, се освобождават. Понякога работи, понякога не. През повечето време обаче не е така.

Текущият ми код е:

document.documentElement.onkeyup = function(e) {
    e = e || window.event;
    if( !e.altKey) {
        // do stuff here
        document.documentElement.onkeyup = null;
    }
}

Вероятно свързано с Предотвратяване на действието за събитие по подразбиране, което не работи...? както аз m работи в IE9 и изскача менюто „Файл“. Все пак отхвърлям менюто, преди да се опитам да задействам събитието.


person Niet the Dark Absol    schedule 29.10.2011    source източник
comment
Щях да кажа, че прозорецът трябва да е активен, предполагам, за да улови въвеждането на ключ. Ако модифициращият ключ има друга функция в уеб браузъра, действията с клавиша може да не са последователни между различни браузъри. По-конкретно как ALT извежда менюта или Win+клавиш изтегля фокуса от браузъра.   -  person donutdan4114    schedule 30.10.2011
comment
Ето защо смятам, че другият ми въпрос (свързан с) е уместен, защото се опитвам да предотвратя появяването на менютата по подразбиране, но не работи.   -  person Niet the Dark Absol    schedule 30.10.2011


Отговори (2)


Не е пряк отговор на въпроса ви, но това може да ви помогне. Това е много подробно описание на това как браузърите управляват натискане/натискане на клавиши/нагоре.

person johndodo    schedule 29.10.2011

Вярвам, че обикновено ключовите събития на браузъра имат предимство пред тези, дефинирани в страницата. Все пак бих предложил да използвате jQuery, защото бях просто тестване в IE9 и изглежда, че са преодолели този проблем.

Редактиране: Въпреки че изглежда, че това улавя събитието, не мисля, че е възможно да попреча на IE да изпълнява свои собствени събития.

person Mike Cluck    schedule 29.10.2011
comment
Съжалявам, но аз съм категорично против използването на jQuery или друга рамка. Наречете ме старомоден, но аз пиша моя JavaScript чист. - person Niet the Dark Absol; 30.10.2011
comment
@Kolink: ‹offtopic› трябва да опитате jQuery, след половин час кодиране в него никога няма да се върнете назад. Не, направи това за 15 минути. :) IMHO, разбира се. - person johndodo; 30.10.2011
comment
@Kolink Честно, няма нищо лошо в това. Опитахте ли да извикате e.preventDefault() onkeydown? Това може да спре изскачането на менюто. - person Mike Cluck; 30.10.2011
comment
@Neurotrace Току-що отидох и опитах това. Няма късмет, менюто все още излиза. - person Niet the Dark Absol; 30.10.2011
comment
@Kolink Съжалявам, мисля, че нямате късмет. Сравнително съм сигурен, че JS не може да замени браузъра по този начин. Тази публикация намеква за това forums.oracle.com/forums/thread.jspa?threadID =2199650 - person Mike Cluck; 30.10.2011