问题描述
我正在制作一个 chrome 扩展程序,我需要为现有的 twitch 聊天添加更多功能。
问题是,如果我通过 javascript 设置 textarea(抽搐聊天文本框)的值,然后允许用户按 Enter 或按“聊天”按钮,则发送到实时聊天的消息是不是我通过 JS 设置的消息,而是由用户输入的正在发送的消息。
例如,首先我使用以下代码定位文本区域:
chat_textBox = document.getElementsByClassName('chat-input__textarea')[0].children[0].childNodes[0]
现在,假设我将这个 textarea 的值和 innerHTML 设置如下:
chat_textBox.value = "Bitcoin"
chat_textBox.innerHTML = "Bitcoin"
假设这些值是在用户输入“Bit”而不是“Bitcoin”整个词时设置的。然后如果用户尝试按下回车键或单击“单击”按钮,即使此文本区域的值设置为“比特币”,但只有“比特”会被发送到实时聊天。
此外,当用户单击或悬停在此文本区域上时,我设置的值(“Bitcoin”)再次更改为“Bit”。所以,我假设有一些功能可以记录用户实际输入的内容并不断替换它。
解决方法
根据您描述的行为,我假设 Twitch UI 正在侦听事件,以便在某处更新状态,然后从字段中读取值,当您以编程方式更新值时会错过该值。
因此,要解决此问题,您可以在更新 change
的值后手动触发 input
或 textarea
事件。