相关疑难解决方法(0)

Chrome中的Keydown Simulation通常会触发,但不会触发正确的键

我想在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值?

javascript google-chrome javascript-events

27
推荐指数
2
解决办法
5万
查看次数

在React App中触发合成事件

我正在为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来触发事件

javascript jquery events facebook reactjs

9
推荐指数
1
解决办法
1757
查看次数