
26.01.2010, 13:21
|
Кандидат Javascript-наук
|
|
Регистрация: 03.11.2008
Сообщений: 116
|
|
Как определить нажата какая-либо клавиша или нет?
Как определить нажата какая-либо клавиша или нет?
То есть не при нажатии, а просто в куске кода на жаваскрипте. Что-нибудь типа IsKeyDown(); ?
|
|

26.01.2010, 14:12
|
 |
Матрос
|
|
Регистрация: 04.04.2008
Сообщений: 6,246
|
|
стандартными средствами нет
но очевидно же как это написать:
<script type="text/javascript">
(function(){
var keyDown=false;
window.isKeyDown=function(){
return keyDown;
};
((function(elem, type, handler){
if (elem.addEventListener){
elem.addEventListener(type, handler, false)
} else {
elem.attachEvent("on"+type, handler)
}
return arguments.callee;
})(window.document,'keydown',function(){keyDown=true}))
(window.document,'keyup',function(){keyDown=false})
})()
</script>
<script type="text/javascript">
setInterval(function(){document.getElementById('qwe').innerHTML=isKeyDown()},100);
</script>
<div id="qwe"></div><br/><br/><br/>
|
|

26.01.2010, 14:39
|
Кандидат Javascript-наук
|
|
Регистрация: 03.11.2008
Сообщений: 116
|
|
Ох, как-то очень сложно. Может быть можно тогда при клике по ссылке как-то проверять нажат ли Shift или Ctrl? В смысле, чтобы код бы попроще. А то я не понимаю просто.
|
|

26.01.2010, 14:52
|
 |
Матрос
|
|
Регистрация: 04.04.2008
Сообщений: 6,246
|
|
<script type="text/javascript">
(function(){
var keyDown=false;
window.isKeyDown=function(){
return keyDown;
};
var addEvent=function(elem, type, handler){
if (elem.addEventListener){
elem.addEventListener(type, handler, false)
} else {
elem.attachEvent("on"+type, handler)
}
return arguments.callee;
}
addEvent(window.document,'keydown',function(event){
event = (event) ? event : window.event;
keyCode=(event.charCode) ? event.charCode : event.keyCode;
if(keyCode==16)
keyDown='Shift (keyCode='+keyCode+')';
else if(keyCode==17)
keyDown='Ctrl (keyCode='+keyCode+')';
else
keyDown='Another key (keyCode='+keyCode+')';
});
addEvent(window.document,'keyup',function(){keyDown=false});
})()
</script>
<a href="#" onclick="this.innerHTML=isKeyDown()?('кнопка нажата: '+isKeyDown()):'кнопка не нажата';return false;">кнопка не нажата</a>
при нажатии ссылки с любой зажатой кнопкой, выводится надпись о том какая кнопка была зажата, или же нет
|
|

26.01.2010, 22:06
|
 |
Пионэр
|
|
Регистрация: 16.11.2009
Сообщений: 1,322
|
|
Бобр,
<script type="text/javascript">
function foo(e){
alert("Ctrl " + (e.ctrlKey?"нажат":"не нажат") + "\r\n" + "Shift " + (e.shiftKey?"нажат":"не нажат") + "\r\n" + "Alt " + (e.altKey?"нажат":"не нажат") + "\r\n" + "Meta " + (e.metaKey?"нажата":"не нажата"));
}
</script>
<button onclick="foo(event)">Щелкни меня!</button>
|
|

26.01.2010, 22:25
|
 |
Профессор
|
|
Регистрация: 15.12.2009
Сообщений: 742
|
|
<script type="text/javascript">
function foo(e){
alert("Ctrl " + (e.ctrlKey?"нажат":"не нажат") + "\\r\\n" + "Shift " + (e.shiftKey?"нажат":"не нажат") + "\\r\\n" + "Alt " + (e.altKey?"нажат":"не нажат") + "\\r\\n" + "Meta " + (e.metaKey?"нажата":"не нажата"));
}
</script>
<button onclick="foo(event)">Щелкни меня!</button>
subzey,
забыл заэкранировать \
Последний раз редактировалось PeaceCoder, 26.01.2010 в 22:28.
|
|

26.01.2010, 22:36
|
 |
Матрос
|
|
Регистрация: 04.04.2008
Сообщений: 6,246
|
|
subzey,
а теперь без рук))
всмысле не в событии))
|
|

26.01.2010, 23:02
|
 |
⊞ Развернуть
|
|
Регистрация: 11.01.2010
Сообщений: 1,810
|
|
Сообщение от PeaceCoder
|
забыл заэкранировать \
|
Зачем экранировать спец. символы? По-моему, они спец.символами выглядят лучше.
|
|

26.01.2010, 23:13
|
 |
Пионэр
|
|
Регистрация: 16.11.2009
Сообщений: 1,322
|
|
PeaceCoder,
Это ж просто CRLF, зачем?
Gvozd,
ну, разве что, чтобы клавиши Win отслеживать. Или Esc мертвой клавишей делать а-ля-Никсы 
|
|

26.01.2010, 23:30
|
 |
Матрос
|
|
Регистрация: 04.04.2008
Сообщений: 6,246
|
|
Сообщение от subzey
|
ну, разве что, чтобы клавиши Win отслеживать. Или Esc мертвой клавишей делать а-ля-Никсы
|
не понял как твой ответ соотносится с моим вопросом
я подразумевал, чтобы foo() не принимала объект события.
ведь не всегда есть такая возможность
поэтому я в этом контексте, и говорю "а без рук"
|
|
|
|