我一直在努力开发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并了解需要考虑的安全问题。有人说这是不可能的,其他人说这是可能的。
有人可以告诉我这是否可以实现,如果是这样,有人能指出我正确的方向如何实现这个或类似的问题/文件吗?
备注 我目前尝试创建扩展程序,访问本地文件时遇到问题。
我尝试创建一个与应用程序通信的扩展程序,但也遇到了问题。
我想避免任何需要联网的解决方案。
我拥有将访问该网站的客户端计算机,因此可以准备这个并添加实现此目的所需的任何软件。
以下是我对此问题的另外两个问题。
答案 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/