Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Горячие клавишы


Автор:  Dimonsoft 1.1.2005, 00:15
Как сделать такое: приудержании CTRL и одновременном ножатии на кнопку на сайте выполнилось какое-нибудь действие?

Автор: Mal Hack 1.1.2005, 00:33
Это не на PHP. Это в JavaScript...
Только на сколько я знаю, с CTRL не плучится. Можно либо просто P например или ALT + P.

Автор: Opik 1.1.2005, 15:15
Ctrl получится...

Автор: Sattu 1.1.2005, 17:32
http://4umi.com/web/ieshortcuts.htm

работает только в ИЕ (правда я не проверял, а у меня в мозилле не пошло)

Автор: Sardar 1.1.2005, 23:24
Ловим событие onkeydown, затем обращаемся к полям обьекта-события: altKey, ctrlKey, shiftKey или metaKey под маком. С другими событиями можешь не парится, возможно действие по дефолту не отключишь. Пример:
Код
/*
* Важно: в разных браузерах по разному работает обработка событий ибо W3C стандарт
* пришёл когда было поздно. Естественно что все методы не совместимы друг с другом....
*/
window.onkeypress=hotKeyHandler; //для Оперы и Мозиллы
if(!window.opera) document.onkeydown=hotKeyHandler; //для ИЕ, Опера тоже среагирует
//в ней отрубание события не работает, так что оно отработает два раза, что нам не нужно
//также действие по дефолту не отрубается если событие пойманно не на window
// returnValue не поможет, одним словом Опера...
function hotKeyHandler(e) {
 if(window.event) { //для ИЕ подобных
 if(window.event.ctrlKey&&(window.event.keyCode=="B".charCodeAt(0)||window.event.keyCode=="b".charCodeAt(0))) {
  alert("OK IE"); //делаем что нибудь полезное
  window.event.cancelBubble=true; //опера сие действие игнорирует...
  window.event.returnValue=false;
  return false;
}
 } else if(e) { //для мозиллы
//в мозилле keyCode возвращает 0, об этом оффициально заявленно, хотя нам от этого не легче
//другое свойство charCode даёт что нужно, но нас предупреждают что оно тоже может дать 0
   if(e.ctrlKey&&(e.charCode=="B".charCodeAt(0)||e.charCode=="b".charCodeAt(0))) {
     alert("OK"); //полезное действие
     e.preventDefault(); //остановим событие
     e.stopPropagation(); //отрубим действие по дефолту
     return false; //ну и по старинке
   }
 }
return true;
}

Код ловит комбинацию ctrl+B и показывает alert.

Автор: Black 2.1.2005, 12:59
Код клавиши - это числовое значение, соответствующее опр. клавиши на клавиатуре. Например, Enter имеет код - 13.
============================

Код

function Kruto(e){
  var knopka = navigator.appName == 'Netscape' ? e.which : e.keyCode;
               if (knopka&&knopka==код_клавиши&&e.ctrlKey) { действия; }
}

Ловим событие:

OnKeyDown='Kruto(event);


============================

Лично я так ловлю клавиши. Работает в IE, Mozilla в др. смотрелках не проверял, да и не надо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)