2011-12-24 102 views
-1

我正在嘗試處理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

回答

1

你能在問題鏈接到網頁?

該頁面可能正在跟蹤該文本區域的JS值甚至是AJAX值 - 每次按鍵都會發布該值。點擊'發佈'按鈕可能僅僅告訴頁面/服務器使用最後保存的文本版本。

由於GM腳本獨立於鼠標和焦點事件更改textarea值,因此不會觸發頁面和/或服務器跟蹤機制。

所以,如果可以的話,找到合適的JS函數並在更改文本後調用它。

如果這太難了,請嘗試將焦點設置到textarea,然後在其他地方,然後返回到textarea。

或者嘗試向文本區域發送擊鍵事件。

鏈接到頁面或其完整代碼快照以獲得更詳細的幫助。