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


Автор: Siqwirit 20.1.2007, 18:08
Привет всем.
Хочу сделать горячие клавиши на форуме, что бы каждый пользователь настраивал их "под" себя.
Беру из базы определенную клавишу
Код

echo '<script type="text/javascript">';
echo 'var gk_general="'.$row['key'].'";';
echo '</script>';

А вот дальше не получается. Пытался сделать так:
Код

HotKeyHandler.keys = {
 gk_general:function(){window.location='index.php?';},
};

Не работает. Может кто-нибудь подскажет как сделать правильно...

Автор: Wolf1994 20.1.2007, 18:18
Захват клавиш: http://www.programmingtalk.com/showthread.php?t=35126 - возможно, поможет

Автор: Sardar 20.1.2007, 19:38
HotKeyHandler работает с кодами клавиш, где ctrl обязателен. Shift проверяется по регистру, т.е:
Код
HotKeyHandler.keys = {
   'a': function() { alert("ctrl+a"); },
   'A': some_shared_action
};
function some_shared_action() { alert("ctrl+shift+a"); }

Хотелось как можно проще, так и вышло. Сейчас ещё Girder добавил проверку на alt комбинацию.

Вот свой $row['key'] ты и должен сгенерить в .keys, который по идее для каждого юзера должен быть своим. Для этого общий код выложи в общий .js, а ключи для генери для каждого.

P.S. регистрируй обработчик на окне (тоже) если хочешь что бы в ИЕ дефолтное действие не отрабатывало. Вот сейчас на форуме под ИЕ горячие не отрубают дефолтное, т.к. обработчик на текстовом поле. Все забили, т.к. большинство на ФФ или на Опере smile

Автор: Siqwirit 21.1.2007, 01:51
возможно вы меня не так поняли (или я вас)...
Код

'a': function() { alert("ctrl+a"); },

здесь событие определяеться по нажатию Ctrl+a. Мне нужно чтобы вот эта "а" бралась из переменной. Т.е. возможно ли сделать что-то вроде 
Код

'имя_переменной': function() { alert("ctrl+a"); },


Автор: Sardar 21.1.2007, 03:47
Siqwirit, повторяю, вязать HotKeyHandler на переменные есть бред, подход к личным настройкам иначе. Вместо генерации переменной лучше положи все общие обработчики клавиш в отдельный общий файл, а ассоциативный .keys генери для каждого уникальный.

Автор: Siqwirit 22.1.2007, 11:06
Спасибо!

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