thi*_*ity 4 javascript jquery events triggers keyevent
是否可以在javascript中触发DOMWindow或DOMDocument上的键事件?基本上我正在创建一个浏览器扩展来与网站进行交互,并且他们在执行特定操作时具有快捷键事件(类似于GMail).我已经找到了关于如何正确触发关键事件的其他帖子(使用jQuery触发按键事件的明确方法)但是在将关键事件发送到文档/窗口时它们似乎不起作用.
到目前为止,我尝试过:
var evt = document.createEvent("KeyboardEvent");
evt.initKeyboardEvent("keydown", true, true, window, false, false, false, false, 0, "o".charCodeAt(0))
window.document.dispatchEvent(evt);
Run Code Online (Sandbox Code Playgroud)
和一个jQuery实现:
$(document).trigger({ type: 'keydown', which: "0".charCodeAt(0) });
Run Code Online (Sandbox Code Playgroud)
我也尝试连续做"keydown","keypress"和"keyup",但这也没有用.
任何帮助将不胜感激!
提前致谢.
我知道你可以在使用时传递额外的参数,trigger()
但我不确定你是否可以覆盖event
对象的属性.你可以传递这样的数据:
$(document).on('keydown keyup keypress', function (event, characterCode) {
if (typeof(characterCode) == 'undefined') {
characterCode = -1;
}
console.log('type = ' + event.type);
console.log('characterCode = ' + characterCode);
});
Run Code Online (Sandbox Code Playgroud)
这将是trigger()
代码:
$(document).trigger('keydown', [ "0".charCodeAt(0) ]);
Run Code Online (Sandbox Code Playgroud)
这是一个演示:http://jsfiddle.net/A7cEE/(注意你的日志控制台)
您提供的stackoverflow答案中的代码似乎工作正常:
捕捉:
$(document).on('keydown', function (event) {
console.log('type = ' + event.type);
console.log('keyCode = ' + event.keyCode);
});
Run Code Online (Sandbox Code Playgroud)
引起:
var e = jQuery.Event('keydown');
e.keyCode = "0".charCodeAt(0);
$(document).trigger(e);
Run Code Online (Sandbox Code Playgroud)
演示:http://jsfiddle.net/A7cEE/1/
请注意,这.on()
是jQuery 1.7中的新增内容,与.bind()
本例中的内容相同.