![](/img/trans.png)
[英]Trigger System-wide Keyboard Events from a Javascript Chrome App
[英]Trigger native keyboard events from a Chrome extension
Facebook具有textarea,可以在其中將文本擴展/縮小到其中的文本大小。 在我的Chrome擴展程序中,我將文本區域內的文本更改為多行。 但是,textareas擴展/收縮方法僅適用於鍵盤事件,因此我必須觸發一個事件。
var event = document.createEvent('KeyboardEvent');
event.initEvent('keyup', true, true, window, false, false, false, false, 38, 38);
this.dispatchEvent(event); // this is the textarea
(此操作適用於所有按鍵,按鍵按下,按鍵操作)
但這是行不通的。 現在,我知道為什么它不起作用了,但是不知道如何解決它。 我已將處理程序附加到該元素,以查看發生了什么:
$('[role=dialog] .MessagingComposerForm textarea').on('keyup', function(e) {
console.log(e);
});
當Chrome擴展程序觸發其keyup事件時,我可以在控制台中看到的對象是普通的Event對象,除了兩件事:keyCode = 0和view = null。
當我通過敲擊鍵盤上的一個鍵來觸發keyup事件時,我可以看到keyCode = 38和view = Window。
有誰知道如何做到這一點?
添加:
我發現了一些東西。 如果我在分派事件之前console.log事件,它仍然不包含正確的信息。 這里:
var event = document.createEvent('KeyboardEvent');
event.initKeyboardEvent('keydown', true, true, window, false, false, false, false, 65, 65);
event.keyCode = 65;
event.which = 65;
event.charCode = 65;
console.log(event);
this.dispatchEvent(event); // this is the textarea
勝過這個對象:
KeyboardEvent: {
...
charCode: 0,
keyCode: 0,
view: Window,
which: 0
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.