使用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>
答
你能在问题链接到网页?
该页面可能正在跟踪该文本区域的JS值甚至是AJAX值 - 每次按键都会发布该值。点击'发布'按钮可能仅仅告诉页面/服务器使用最后保存的文本版本。
由于GM脚本独立于鼠标和焦点事件更改textarea值,因此不会触发页面和/或服务器跟踪机制。
所以,如果可以的话,找到合适的JS函数并在更改文本后调用它。
如果这太难了,请尝试将焦点设置到textarea,然后在其他地方,然后返回到textarea。
或者尝试向文本区域发送击键事件。
链接到页面或其完整代码快照以获得更详细的帮助。
也许所有的onfocus垃圾都会干扰帖子的功能。那么多内联JS代码是**从不**是一个好主意。 – 2011-12-24 00:56:33
@MarcB - 内嵌JavaScript *永远*真的是个好主意吗? :) – 2011-12-24 01:21:17
@AdamRackis是的,Google一直在做。但如果你不是谷歌...... :) – 2011-12-24 04:01:11