我正在编写一个针对Facebook的Chrome扩展程序,并希望以编程方式触发帖子上聚焦评论草稿的提交。默认行为是在用户按下Enter键时提交,因此我试图欺骗Facebook UI,让其认为用户已经这样做了。
Facebook使用React和一个可编辑的div作为评论表单。
以下是我尝试过的一些方法:
1)jQuery事件触发器
2)相同的方法,但使用VanillaJS事件触发器。relevant StackOverflow question - 也是从两种环境中尝试的。 - 没有任何反应。
Facebook使用React和一个可编辑的div作为评论表单。
以下是我尝试过的一些方法:
1)jQuery事件触发器
$('<the contenteditable div>').trigger($.Event('keydown', {which: 13}))
- 我已经尝试过从内容脚本环境和实际页面环境(通过响应postMessage的注入脚本和Chrome控制台)进行尝试。
- 我还尝试从每个上下文中在document上触发事件。
- 没有任何反应。2)相同的方法,但使用VanillaJS事件触发器。relevant StackOverflow question - 也是从两种环境中尝试的。 - 没有任何反应。
3) 在这一点上,我意识到这是React并且它使用自己的SyntheticEvents
,所以我基本上从ReactTestUtils
中复制/粘贴了Simulate
函数,该函数旨在通过模拟事件来帮助测试,并在页面环境中运行(通过Facebook的前端require
函数获取对required
对象的引用)。
- 同样不起作用。 该函数完全执行且没有错误,但应用程序没有响应。
我主要尝试了这种方法,因为它具有最多的附加侦听器:keydown
事件。
我知道这些问题,但它们没有帮助我理解:Force React to fire event through injected JavaScript