Проблема с буфером нажатия клавиши Javascript - PullRequest
1 голос
/ 24 апреля 2009

У меня есть функция, которая начинает сжимать клавиши после нажатия горячей клавиши и запускает процесс AJAX в конце последовательности (сканирование штрих-кода).

Вопрос в том, что произойдет, если пользователь случайно нажмет горячую клавишу?

Мой раствор для бумажных салфеток был:

on hotkey: if(okay(true)) {buffer=""; ts=now(); consumekey();}
on EOTkey: if(okay(false)) {AJAX(buffer); consumekey();}
on datakey: if(okay(false)) {appendbuffer(key); consumekey();}
on otherkey: dumpbuffer();    

var status=false;
var ts=0;
var buffer="";

function okay(bool state)
{
 if (state && !status) || (!state && status && !timeout(ts) ) return true;
 dumpbuffer();
}

function dumpbuffer()
{
 mybuffer=buffer;
 buffer="";
 ts=0;
 status=false;
 sendkeys(mybuffer);
}

Так, как мы пишем sendkeys в Javascript? (Кстати, это может быть специфичным для IE). Текущая реализация использует jQuery, но в нашем коде нет содержимого для функции sendkeys.

1 Ответ

2 голосов
/ 24 апреля 2009

Простой пример sendKeys, работает только в IE. Вам нужно будет включить ActiveX, так как он требует создания экземпляра оболочки WScript.

<script>
function pageSetup()
{
    var shell;
    shell = new ActiveXObject("WScript.Shell");
    shell.SendKeys("%fu");
}
</script>

<div onclick="pageSetup();" style="cursor:pointer;">Open Page Setup</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...