我正在构建一个Chrome扩展,它覆盖在第三方react网站上。我正在尝试使用以下代码更新该应用程序中的文本区域的值:
$('textarea').val("Text to go in textarea.");
代码成功地更新了文本区,但是一旦用户单击文本区,DOM似乎就会重新生成,并且值变为空白。
更新文本区域中的值,使其在用户单击并重新生成DOM后仍保持不变,最好的方法是什么?我不是react专家,但我猜textarea与状态有关。有没有办法在我的chrome扩展中通过我自己的jquery更新它?
为了清楚起见,这个文本区域属于一个我无法控制的第三方网站/react应用程序。我正试着通过我自己的google chrome扩展来操作它。我认为最简单的方法是以某种方式模拟实际的输入,以便让react应用程序认为用户输入了我的输入,但是我到处搜索,都找不到这样做的方法。
发布于 2019-05-30 09:26:55
尝试使用DOM
Html元素的设置值:
document.getElementById("textarea").value = "Johnny Bravo";
发布于 2019-05-30 12:53:18
根据@Panther的建议展开,您可以像上面一样设置该值,然后触发onChange或按键事件等,以保存状态或属性的更改。现在,由于React使用合成事件,因此您需要触发它,如下所示。
$('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);
});
https://stackoverflow.com/questions/56370286
复制相似问题