1

我有一个功能,它在按下热键后开始吞噬键,并在序列结束时触发 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);
}

那么我们如何在 Javascript 中编写 sendkeys 呢?(顺便说一句,这可能是特定于 IE 的)。当前的实现使用 jQuery,但我们的代码没有 sendkeys 函数的任何内容。

4

1 回答 1

2

简单的 sendKeys 示例,仅适用于 IE。您必须启用 ActiveX,因为它需要实例化 WScript Shell。

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

<div onclick="pageSetup();" style="cursor:pointer;">Open Page Setup</div>
于 2009-04-24T19:57:49.293 回答