我想在Firefox中的文本框中模擬JavaScript中的keyinput。該文本框具有onfocus=" this.value='' "
屬性。仿真+我的代碼可以在JavaScript onfocus屬性和按鍵事件
找到工作代碼:
var divy = document.getElementById("eventListener");
divy.focus();
var inputText = '';
for(var i = 0; i < ('asd').length; i++)
{
var event = document.createEvent('KeyboardEvent');
event.initKeyEvent ('keydown', true, true, null, false, false, false, false, 0, 0)
divy.dispatchEvent(event);
inputText += ('asd').charAt(i);
var event = document.createEvent('KeyboardEvent');
event.initKeyEvent ('keypress', true, true, null, false, false, false, false, 0, ('asd').charCodeAt(i))
divy.dispatchEvent(event);
divy.value = inputText;
var event = document.createEvent('KeyboardEvent');
event.initKeyEvent ('keyup', true, true, null, false, false, false, false, 0, 0)
divy.dispatchEvent(event);
}
divy.blur();
我的問題是,如何正確地模擬輸入(不包括jQuery的!),因此第二個文本框沒有空值。而且由於焦點事件只是一次拋出,所以爲什麼每次都要擦除這個值。
UPDATE:
正如我認爲divy.focus();方法可能需要一些時間來執行的屬性onfocus事件,我設置了一個超時發送的關鍵事件,使用:
windows.setTimeout("fireKeys2()", 5000);
但是,這也似乎並沒有工作。測試位於這裏 http://jsfiddle.net/hPBNA/23/
更新2:
我想通了自己的問題,就好像如果element.value已被設置爲「」這種方式(element.value =「」)元素。 setAttribute('value',someText)無法改變它。訪問element.value屬性反而給了我正確的結果。
在Firefox中測試22.不知道它是否可在其他版本上重現。