执行按键事件

时间:2014-02-28 15:35:06

标签: javascript jquery

我一直在努力开发POS解决方案,到目前为止,打开Till Drawer一直是最困难的部分。

目前我正在尝试通过组合键来完成此操作。即CTRL + SHIFT + p。我需要做的是在调用某个函数时执行这些键。我已经构建了系统并且还准备好了等待功能。

我正在使用Auto hot Key将这些键映射到打开抽屉的exe。如果我按下键盘上的按键,这样就可以了。但是,我希望自动执行这些键,而不是让用户按下这些键。我已经搜索了很多,如果按下一个键然后相应的反应,许多解决方案正在监听。

我发现的当前代码让我略微前进如下(这模拟了我理解的CTRL + SHITF + p的压力):

e = jQuery.Event("keypress")
    e.which = 80; //choose the one you want
    e.ctrlKey = true;
    e.shiftKey = true;
    $("#pos-paid").keypress(function(){alert('keypress triggered')}).trigger(e)

这确实提醒我按键已被按下。 Jquery绝对不是我的强项,所以请原谅我,如果这个函数是无意义的。

我正在使用Chrome并了解需要考虑的安全问题。有人说这是不可能的,其他人说这是可能的。

有人可以告诉我这是否可以实现,如果是这样,有人能指出我正确的方向如何实现这个或类似的问题/文件吗?

备注 我目前尝试创建扩展程序,访问本地文件时遇到问题。

我尝试创建一个与应用程序通信的扩展程序,但也遇到了问题。

我想避免任何需要联网的解决方案。

我拥有将访问该网站的客户端计算机,因此可以准备这个并添加实现此目的所需的任何软件。

以下是我对此问题的另外两个问题。

Communicate with Cash Drawer from Website

Access Local Files using a Google Chrome Extension

1 个答案:

答案 0 :(得分:3)

如果从内容脚本执行KeyboardEvent,应该没有问题。 jQuery代码不起作用。

这是一个触发CTRL + SHIFT + p'keydown'事件的函数。此外,Chrome还有错误,需要使用pollyfill才能使其正常工作:

var event_object = document.getElementById('pos-paid');

function emitKeyEvent() {

    //    This function triggers the event
    var keyEvent = new KeyboardEvent("keypress", {key : "p", char : "p", ctrlKey: true, shiftKey: true});
    event_object.dispatchEvent(keyEvent);
}

event_object.addEventListener('keypress', function(e){

    //    This function listens to the event
    console.log(event, 'ctrlKey: ' + e.ctrlKey, 'shiftKey: '+ e.shiftKey, e.char, e.key);
    alert('CTRL + SHIFT + p pressed')

    e.preventDefault();

});

//    Just trigger CTRL + SHIFT + p with emitKeyEvent();
emitKeyEvent();

您可以在此处进行测试:http://jsfiddle.net/u3gdQ/