javascript - 如何使用 Jquery 更新反应应用程序中的 textarea 值
问题描述
我正在构建一个覆盖 3rd 方反应网站的 Chrome 扩展。我正在尝试使用以下代码更新该应用程序中 textarea 的值:
$('textarea').val("Text to go in textarea.");
代码成功更新了 textarea 但是一旦用户单击 textarea,DOM 似乎重新生成并且值变为空白。
更新 textarea 中的值以使其即使在用户单击并重新生成 DOM 后仍保持不变的最佳方法是什么?我不是反应专家,但我的猜测是 textarea 与状态相关。有没有办法在我的 chrome 扩展中从我自己的 jquery 更新它?
为了清楚起见,textarea 属于我无法控制的第 3 方网站/react 应用程序。我正在尝试从我自己的 google chrome 扩展程序中操作它。我认为最简单的方法是以某种方式模拟实际输入,以使 React 应用程序认为用户输入了我的输入,但是我四处搜索却找不到这样做的方法。
解决方案
扩展@Panther 的建议,您可以像上面那样设置值,然后触发 onChange 或 keypress 事件等以保存状态或道具的更改。现在由于 React 使用合成事件,您需要触发 then ,如图所示。
$('textarea').val("Text to go in textarea.");
$.each(document.getElementsByTagName("textarea"),(index,Element)=>{
let event = new Event("change"); // repeat for keypressup,down,input etc.
Element.dispatchEvent(event);
});
推荐阅读
- html - 为什么 CSS - Flexbox “end” 和 “start” 属性在 Chrome 中不起作用,但在 Firefox 中起作用?
- python - 条目小部件中的清除文本不起作用
- spring-boot - Spring Boot jar 文件,不读取配置文件夹中的 application.properties
- c# - MassTransit 在关闭时尝试无限连接到 RabbitMQ
- r - 如何根据季度数据检索“寓言”“ETS”模型的组件?
- javascript - 输入值是文本不变
- c - C - 2 个数组的平均值 - 始终为 0
- android - 如何使用 android studio 从应用程序向主题组发送 FCM 通知
- node.js - 在 Ubuntu 16.04 上执行 Localtunnel 时出错
- python - 使用 handler500 时 Django 不会通过电子邮件发送 500 错误