Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在React应用程序中触发合成事件_Javascript_Jquery_Facebook_Events_Reactjs - Fatal编程技术网

Javascript 在React应用程序中触发合成事件

Javascript 在React应用程序中触发合成事件,javascript,jquery,facebook,events,reactjs,Javascript,Jquery,Facebook,Events,Reactjs,我正在为Facebook编写一个Chrome扩展,并希望通过编程触发在帖子上提交重点评论草稿。默认行为是在用户点击Enter键时提交,因此我试图欺骗Facebook用户界面,使其认为用户这样做了 Facebook使用React和contenteditablediv作为评论表单 以下是我尝试过的一系列方法: 1) jQuery事件触发($.Event('keydown',{which:13})) 我在内容脚本环境和实际页面环境中都尝试过(通过响应postMessage的注入脚本和Chrome控制

我正在为Facebook编写一个Chrome扩展,并希望通过编程触发在帖子上提交重点评论草稿。默认行为是在用户点击Enter键时提交,因此我试图欺骗Facebook用户界面,使其认为用户这样做了

Facebook使用React和
contenteditable
div作为评论表单

以下是我尝试过的一系列方法:

1) jQuery事件触发($.Event('keydown',{which:13}))

  • 我在内容脚本环境和实际页面环境中都尝试过(通过响应
    postMessage
    的注入脚本和Chrome控制台)
  • 我还尝试从每个上下文触发
    文档上的事件
  • 似乎什么也没发生
2) 同样的事情,但是有VanillaJS事件触发

  • 也可以从这两种环境中
  • 什么也没发生
3) 此时,我意识到这是React,它使用自己的
合成事件
,因此我基本上复制/粘贴了一个通过模拟事件来帮助测试的,并在页面环境中运行它(通过Facebook的前端
require
功能获取对
所需
对象的引用)

  • 也不起作用。函数完全执行,没有错误,但应用程序没有响应
我在大多数
keydown
事件中尝试过这种方法,因为它有最多的侦听器


我知道这些问题,但它们并没有帮助我理解:

根据您的描述,这是否是一个问题还不清楚,但是
SyntheticEvent
以前因为对象被重用而给我带来了痛苦。报告中有一条关于这一点的说明:

如果要以异步方式访问事件属性,应调用事件上的
event.persist()
,这将从池中删除合成事件,并允许用户代码保留对事件的引用


如果您没有立即使用该事件,或者如果您试图将其传递到一个新的作用域,则需要
persist()
it.

您是否试图从键盘事件中更改可编辑div的内容?你能分享一个JSFIDLE来展示你的问题吗?嗨,马特!你有没有找到一种方法来触发事件,使其产生反应?我没有,对不起!我最终放弃了这个方向,选择了稍微不同的解决方案(要求用户按ctrl/cmd enter键,facebook将其解释为“enter”,但我的扩展可以有自己的处理程序;有关更多信息,请参阅)