1
我的代码被我正在创建的Chrome扩展注入的严重问题。本质上,我需要一个keyup事件监听器来拾取某个键,但我似乎无法得到它。在jQuery中触发一个keyup事件
这里是我注入的代码(请注意,有很多的冗余,因为我想要大量的东西来让它触发事件监听器,一旦找到可用的代码,我就会清理它)。
function simulateKey(iElement) {
$(iElement).focus();
var e = jQuery.Event("keyup");
e.which = 37;
e.keyCode = 37;
e.charCode = 0;
$(iElement).keyup(function() {
console.log("keyup element");
});
$(iElement).trigger(e);
var f = jQuery.Event("keyup");
f.which = 70;
e.keyCode = 70;
f.ctrlKey = true;
f.shiftKey = true;
$(iElement).trigger(f);
$ (document).trigger(f);
$ (window).trigger(f);
}
当调用此函数时,输入元素变为焦点并且“控制键元素”被打印到控制台。但是,当这个函数被调用并且我有一个事件监听器断点设置为keyup事件时,代码不会出现。
当我简单地按住键盘上的某个键,同时关注输入字段,并且为键盘事件设置了事件监听器断点时,源jquery.min.js中断,“(e)”为突出显示,这是该函数调用的参数:“f = v.handle = function(e)”...请注意,只有一个断点正常发生,但是如果我已经调用了我的函数,则会发生2个断点,因为我在关键事件中生成console.log。
任何帮助非常感谢,谢谢!
的问题是,即使你给我的代码似乎被其他KEYUP听众有所回升。如果转到JSnippet页面,打开开发工具并设置关键事件的事件断点,则即使将e.which打印到控制台并设置为iElement中的值,也不会在运行代码时中断。但是,如果您关注html输入并开始输入,则触发断点。 –