[英]js - simulate key press without specifying an element
我想在js中模擬按鍵。 最好不指定任何元素。
我想做的方式是在輸入上使用 .focus() 然后模擬像字符“a”這樣的按鍵。
如果我自己按下鍵會發生同樣的事情。
通過互聯網搜索我沒有找到解決方案。 它可能與模擬事件和輸入字段的組合有關。 有時我可以捕捉到事件,但輸入字段中沒有輸入。
非常感謝您的幫助。
編輯1:這不應該被認為是重復的: 是否可以以編程方式模擬按鍵事件?
因為這並不能解決我的問題。 我已經試過了。
編輯2:請不要僅僅因為您不知道如何回答這個問題而對這個問題投反對票。
如果您擁有或可以包括jQuery,這是簡單的方法
使用jQuery
jQuery.event.trigger({ type: 'keydown', which: 78 }); // press n key
要模擬輸入字段中的keypress事件,請像這樣使用
var e = jQuery.Event("keydown");
e.which = 78; // n code value
e.altKey = true; // Alt key pressed
$("#inputBox").trigger(e);
沒有jQuery
var kbEvent= document.createEvent("KeyboardEvent");
var initMethod = typeof kbEvent.initKeyboardEvent !== 'undefined' ? "initKeyboardEvent" : "initKeyEvent";
kbEvent[initMethod](
"keydown", // event type : keydown, keyup, keypress
true, // bubbles
true, // cancelable
window, // viewArg: should be window
false, // ctrlKeyArg
false, // altKeyArg
false, // shiftKeyArg
false, // metaKeyArg
78, // keyCodeArg : unsigned long the virtual key code , else 0
0 // charCodeArgs : unsigned long the Unicode character associated with the depressed key, else 0
);
document.dispatchEvent(kbEvent);
上面的代碼實際上不會為您修改輸入值,它將僅模擬擊鍵
有關更多信息,請參見這篇文章。 如何使用jQuery模擬輸入字段中的鍵入?
您需要的是: fn.sendKeys
我在是否可以以編程方式模擬按鍵事件中寫了這個答案? ,自提出此問題(2018 年)以來已更新,現在還包括一些有關更新輸入元素和觸發偵聽器的信息(劇透警報,有時可能很容易,有時更難,或者有時不可行) .
關於“不指定元素”,您需要一個eventTarget (如元素) dispatchEvent 。 如果你不使用任何,那么你在全局對象中運行它,相當於瀏覽器中的window.dispatchEvent()
。
注意:當您指定一個元素時,由於事件冒泡,該事件也可以觸發其他元素(父級)中的偵聽器
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.