Как отследить нажатие <Alt>+<N> в Opera?

alex77

Новичок
Как отследить нажатие <Alt>+<N> в Opera?

Здравствуйте.
Для ускорения внесения позиций оператором в каталог, добавление новой позиции
повесил на клавиши <Alt>+<N>. Везде работает, кроме Opera.
По отдельности нажатия распознаются, а одновременное нажатие - нет.

Как отследить нажатие клавиш <Alt>+<N> в Opera?
 

alex77

Новичок
пока так:
document.onkeydown = altN;
по событию onkeydown вызывается функция
PHP:
function altN(evt) {
        if (document.all || self.opera) evt = event; 
        document.title = evt.altKey;
        if(evt.keyCode == 27) {
            ocreateCSCatalogGrItem.hide();
        } 
        if((evt.altKey) && (evt.keyCode == 78)) {
            ocreateCSCatalogGrItem.show();
            ocreateCSCatalogGrItem.container.focus();
        }
    }
-~{}~ 02.10.10 00:06:

Добавлю, что нажатие кнопки <esc> срабатывает отлично.
 

dimagolov

Новичок
ты бы вместо if (document.all || self.opera) evt = event; делал if (!evt ) var evt = window.event; это раз.
во-вторых у меня есть такая ф-я:
PHP:
function GetEventKeyCode (event) {
	if (!event) return null;
	return event.keyCode || event.charCode || event.which;
}
для чего она такая. думаю понятно.
Ну и последнее, есть еще такая штука как event.modifiers, которая в некоторых браузерах отражает статус управляющих клавиш вместо altKey, ctrlKey и shiftKey
 

alex77

Новичок
спецом написал такое

PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />        
        <title>test</title>        
    </head>    
    <body>
    <textarea id="debug" cols="100" rows="10"></textarea>
    <script type="text/javascript">
    
        function altN(evt) {
            if (!evt ) var evt = window.event; 
            var debug = document.getElementById('debug');
            
            debug.value = 'keyCode ' + evt.keyCode;
            debug.value+= '\n';
            debug.value+= 'charCode ' + evt.charCode;
            debug.value+= '\n';
            debug.value+= 'which ' + evt.which;
            debug.value+= '\n';
            debug.value+= 'altKey ' + evt.altKey;
            debug.value+= '\n';
            debug.value+= 'ctrlKey ' + evt.ctrlKey;
            debug.value+= '\n';
            debug.value+= 'shiftKey ' + evt.shiftKey;
            debug.value+= '\n';
            debug.value+= 'modifiers ' + evt.modifiers;
        }
        document.onkeydown = altN;
    
    </script>
    </body>
</html>
при нажатой клавише alt на клавишу N уже никакой реакции.
 

dimagolov

Новичок
значит, нашли еще одно подтверждение, что Опера не браузер, раз она прекращает обработку событий клавиатуры скриптами при нажатом Alt.
 

alex77

Новичок
Для Opera будет сделано <Alt>+<Shift>+<...>, в остальных браузерах по человечьи.
 
Сверху