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拡張機能がキーアップイベントをトリガーすると、コンソールに表示されるオブジェクトは、keyCode=0とview=nullの2つを除いて、通常のEventオブジェクトになります。
キーボードのキーを押してキーアップイベントをトリガーすると、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
}