簡體   English   中英

js - 在不指定元素的情況下模擬按鍵

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM