我想在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.不知道它是否可在其他版本上重现。