使用javascript在textarea中设置文本

问题描述:

我正在尝试处理textarea中的文本[在Facebook组页面上。 '写文章'有一个文本区域]并将其替换为新文本。这是使用使用javascript在textarea中设置文本

textHolder = document.getElementsByClassName("uiTextareaAutogrow input mentionsTextarea textInput")[0]; 

var vntext=textHolder.value; 

var vn2text=Encrypt(vntext); 

textHolder.value=vn2text; 

所以新文本在文本区看到的Greasemonkey脚本完成,但在单击“后”按钮时,新的文本不采取代替旧的文本张贴

但是,如果我们手动将至少一个字符插入到已处理的文本中,然后在单击“发布”按钮后发布生成的文本。所以我不明白为什么它没有手动插入文本而直接不采取新的文本。

还有其他事件在textarea元素中被调用,但我不知道他们在做什么。

那么应该怎么做才能发布新文本?

DOM的Facebook页面上的文本区域如下:

<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> 
+3

也许所有的onfocus垃圾都会干扰帖子的功能。那么多内联JS代码是**从不**是一个好主意。 – 2011-12-24 00:56:33

+0

@MarcB - 内嵌JavaScript *永远*真的是个好主意吗? :) – 2011-12-24 01:21:17

+1

@AdamRackis是的,Google一直在做。但如果你不是谷歌...... :) – 2011-12-24 04:01:11

你能在问题链接到网页?

该页面可能正在跟踪该文本区域的JS值甚至是AJAX值 - 每次按键都会发布该值。点击'发布'按钮可能仅仅告诉页面/服务器使用最后保存的文本版本。

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

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

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

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

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