使用javascript在textarea中设置文本

时间:2011-12-24 00:52:28

标签: javascript facebook textarea greasemonkey

我正在尝试处理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>

1 个答案:

答案 0 :(得分:1)

您可以链接到相关页面吗?

该页面可以跟踪textarea在JS中的价值,甚至可以跟踪每次击键时发布的AJAX。单击“发布”按钮可能只是告诉页面/服务器使用上次保存的文本版本。

由于GM脚本独立于鼠标和焦点事件而更改textarea值,因此不会触发页面和/或服务器跟踪机制。

所以,如果可以,找到适当的JS函数并在更改文本后调用它。

如果这太难了,请尝试将焦点设置到textarea,然后设置在其他位置,然后再返回textarea。

或者尝试向文本区域发送击键事件。

链接到该页面或其完整代码快照,以获取更详细的帮助。