我想在html页面中模拟给定textarea元素上的keydown事件.因为我正在使用chrome,所以我调用initKeyboardEvent了我的变量,并将我想要输入的keyCode传递给了textarea.这是我尝试过的:
var keyEvent = document.createEvent('KeyboardEvent');
keyEvent.initKeyboardEvent('keydown', true, false, null, 0, false, 0, false, 77, 0);
inputNode.dispatchEvent(keyEvent);
Run Code Online (Sandbox Code Playgroud)
在这段代码中,我正在键入字母,m但textarea只获取keyCode 13,这是Enter键.所以,我尝试了一个我在网上看到的覆盖代码,它将值设置为keyCodeVal,但没有成功
var keyEvent = document.createEvent('KeyboardEvent');
Object.defineProperty(keyEvent, 'keyCode', {
get : function() {
return this.keyCodeVal;
}
});
keyEvent.initKeyboardEvent('keydown', true, false, null, 0, false, 0, false, 77, 0);
keyEvent.keyCodeVal = 77;
inputNode.dispatchEvent(keyEvent);
Run Code Online (Sandbox Code Playgroud)
有谁知道如何设置keyCode值?
我正在为Facebook编写Chrome扩展程序,并希望以编程方式触发在帖子上提交重点评论草稿.默认行为是在用户点击Enter键时提交,因此我试图诱骗Facebook UI认为用户这样做了.
Facebook使用React和contenteditablediv作为评论表单.
这是我尝试过的一系列事情:
1)jQuery事件触发 $('<the contenteditable div>').trigger($.Event('keydown', {which: 13}))
postMessage和Chrome控制台)document从每个上下文触发事件.2)同样的事情,但VanillaJS事件触发.相关的StackOverflow问题
3)此时我意识到这是React并且它使用它自己的SyntheticEvents,所以我基本上复制/粘贴了该Simulate函数,ReactTestUtils它应该通过模拟事件帮助测试并在页面环境中运行(required通过Facebook的前端抓取对象的引用)require功能).
我已经尝试了大多数keydown事件,因为它拥有最多的听众.
我知道这些问题,但它们没有帮助我理解:强制React通过注入JavaScript来触发事件