1
我正在研究使用內容腳本更改textarea值的瀏覽器擴展(google chrome和firefox)。我此腳本的工作:發佈動態更改的textarea值不適用於ajax表格
谷歌瀏覽器我使用這個腳本:
function print(msg, textarea){
textarea.focus();
textarea.click();
textarea.value = '';
for(var i=0; i<msg.length;i++){
var e = document.createEvent('KeyboardEvent');
e.initKeyboardEvent("keypress", true, true, null, false, false, false, false, 0, msg.charCodeAt(i));
textarea.dispatchEvent(e);
textarea.value += msg[i];
}
}
使用AJAX textarea的正確更新的值,一些網站,但由於某種原因,當我提交表單,舊的textarea內容將被髮布。如果我手動按一個鍵,問題就解決了。
我無法理解問題所在。我用jQuery嘗試了$(textarea).keydown()。keypress().keyup()。change()或.blur(),但它沒有幫助。
我不是太熟悉,在Chrome腳本如何工作的內容 - 與火狐您可能需要使用'unsafeWindow'對象直接在窗口中的JS代碼對其進行更改後訪問textarea。 – canuckistani
給一個「某些網站」的鏈接(或者,甚至更好,他們的代碼縮減版本)可能是一個好主意。他們可能會將文本區域值複製到他們提交的隱藏字段中 - 並且通常會在偵聽「keyup」事件時完成。 –
@canuckistani:此代碼僅使用DOM方法和屬性,代理不應該成爲問題。順便說一下,Chrome中的內容腳本的工作方式非常相似(只有「真實的」DOM屬性和方法可以訪問),但Chrome並沒有提供任何解決方法。 –