所以(僅僅以「so」開頭)我想爲qwebirc平臺創建一個greasemonkey腳本。我需要根據發生的一些事件自動發送回覆。對於那些不知道的人來說,一旦登錄了qwebirc,屏幕底部會有一個輸入文本字段,您可以在其中編寫回復,然後按回車鍵將回復發送到服務器。輸入字段包含在表單元素中,但表單沒有提交按鈕。在輸入按鍵模擬時觸發默認行爲
我可以通過寫入其「value」屬性來填充輸入字段(沒有問題),但我沒有辦法將答覆「提交」給服務器。我試着在容器表單元素上調用.submit()方法,但是它只是簡單地重新加載頁面(所以它發送給自己 - 這很有意義,因爲表單元素上沒有「action」屬性)。在我看來,唯一的解釋是,一旦在輸入字段中按下回車鍵,就會有一個方法在qwebirc.js中的某個地方被調用。
我無法找到負責此操作的代碼(儘管我在Chrome中工作過,我在鍵盤上設置了一個事件監聽器斷點 - 輸入,當我按下回車鍵並指向我時一些函數的開始),因爲腳本被縮小了,沒有辦法讓我知道這些「m」,「n」,「p」,「t」等意味着什麼。如果我有未壓縮的版本,我可以掃描它,也許可以找到它。我也嘗試下載qwebirc項目,但是那裏有很多文件 - 而在服務器上,我正在嘗試編寫一個腳本。
這裏的主要想法是,我猜測輸入按鍵模擬應該觸發發送功能 - 無論哪裏和哪個地方。
爲了做到這一點,我在stackoverflow上找到了一些相同主題的問題 - 模擬輸入按鍵。我試過這個代碼:
function simulate() {
var evt = document.createEvent('KeyboardEvent'),
input = document.querySelector('.keyboard-input');
evt.initKeyboardEvent(
'keydown',
true,
true,
window,
false,
false,
false,
false,
13,
0
);
input.dispatchEvent(evt);
}
事件被創建(我可以在FireBug的DOM面板中看到它),但是沒有采取任何行動。我的意思是爲什麼不.dispatchEvent()的行爲就像一個真正的輸入按鍵?
在此先感謝。