我正在为 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事件中尝试过这个,因为它有最多的听众。
我知道这些问题,但它们并没有帮助我理解:Force React to fire event through injection JavaScript