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輸入並開始輸入,則觸發斷點。 –