簡體   English   中英

從Chrome擴展程序觸發本機鍵盤事件

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

這是WebKit中的錯誤: https ://bugs.webkit.org/show_bug.cgi ? id =16735

30個字符

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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