我正在尝试处理textarea中的文本[在Facebook群组页面上。 'write post'有一个文本区域]并用新文本替换它。这是使用Greasemonkey脚本
完成的textHolder = document.getElementsByClassName( "uiTextareaAutogrow input mentionsTextarea textInput" )[0];
var vntext=textHolder.value;
var vn2text=Encrypt(vntext);
textHolder.value=vn2text;
因此,在文本区域中可以看到新文本,但是当点击“发布”按钮时,不会采用新文本而是发布旧文本
但是,如果我们手动将至少一个字符插入到已处理的文本中,则会在单击“发布”按钮后发布生成的文本。所以我不明白为什么没有手动插入文本就不直接拿新文本。
在textarea元素中调用了其他事件,但我不知道它们到底在做什么。
那么应该做些什么才能发布新文本?
Facebook页面上文本区域的DOM如下:
<textarea
class="uiTextareaAutogrow input mentionsTextarea textInput DOMControl_placeholder"
title="Write something..." name="xhpc_message_text" placeholder="Write something..."
onfocus="return wait_for_load(this, event, function() {if (!this._has_control) { new TextAreaControl(this).setAutogrow(true); this._has_control = true; } return wait_for_load(this, event, function() {JSCC.get('j4ef51acb72eb241587530255').init(JSCC.get('j4ef51acb72eb241587530256'));;JSCC.get('j4ef51acb72eb241587530256').init(["buildBestAvailableNames","hoistFriends"]);JSCC.get('j4ef51acb72eb241587530253').init({"max":10}, null, JSCC.get('j4ef51acb72eb241587530255'));;;});});"
autocomplete="off" style="direction: ltr; "
>
Write something...
</textarea>
答案 0 :(得分:1)
您可以链接到相关页面吗?
该页面可以跟踪textarea在JS中的价值,甚至可以跟踪每次击键时发布的AJAX。单击“发布”按钮可能只是告诉页面/服务器使用上次保存的文本版本。
由于GM脚本独立于鼠标和焦点事件而更改textarea值,因此不会触发页面和/或服务器跟踪机制。
所以,如果可以,找到适当的JS函数并在更改文本后调用它。
如果这太难了,请尝试将焦点设置到textarea,然后设置在其他位置,然后再返回textarea。
或者尝试向文本区域发送击键事件。
链接到该页面或其完整代码快照,以获取更详细的帮助。