2013-11-23 75 views
0

我試圖模擬用JavaScript在瀏覽器中進行用戶輸入。點擊事件已成功創建和分派,但由於某些原因,類似的鍵盤事件代碼似乎根本無法工作。調度鍵盤事件在JavaScript中不起作用

var event = document.createEvent("KeyboardEvent"); event.initKeyEvent("keydown", true, true, window, false, false, false, false, 87, 0); document.getElementById("id").dispatchEvent(event);

這將返回true,但相應的字符不會出現在輸入端。我嘗試了按鍵和鍵盤以及哪些都不起作用(對FF和Chrome進行測試)。 由於某些安全原因它被瀏覽器禁止或者我做錯了什麼?有沒有解決方法讓它工作?

回答

1

事件發送正常,所有的事件監聽器都會觸發,沒有發生的事情是該角色沒有得到「鍵入」。這是因爲事件的起源並非來自正確的來源。這是一個「安全功能」。

模擬鍵入結果文本的唯一方法是重新設置或以其他方式顯式更改節點的內容。

+0

你說得對,當我以編程方式分派事件時,「keypress」事件處理程序實際上也被調用。 我不明白爲什麼它被認爲是安全威脅?我總是可以將一些數據放入相應輸入的值字段中,甚至可以使用這些數據提交表單。它解決了哪個問題? –