尽管有很多关于如何在 JS 中模拟按键(keydown/keypress)的文章,但似乎没有一种解决方案适用于我正在使用的浏览器(Firefox ESR 17.0.7、Chrome 28.0.1500.72、IE 10)。我测试过的解决方案取自这里、这里和这里。
我想要做的是模拟文本区域/输入中的任何击键。虽然我可以附加/删除直接更改“值”的字符,但我看不到任何选项,只能输入模拟“上”、“下”、“主页”等键。
根据文档,它应该很简单。例如:
var e = document.createEvent("KeyboardEvent");
if (e.initKeyboardEvent) { // Chrome, IE
e.initKeyboardEvent("keydown", true, true, document.defaultView, "Enter", 0, "", false, "");
} else { // FF
e.initKeyEvent("keydown", true, true, document.defaultView, false, false, false, false, 13, 0);
}
document.getElementById("text").dispatchEvent(e);
确实触发了“Enter”keydown 事件,我的处理程序可以捕捉到它。但是,它不会以任何方式影响 textarea - 不会出现新行。其他键码也一样:字符不出现,箭头不改变插入符号的位置等。
我已经扩展了Orwellophile的代码并将其发布到http://jsfiddle.net/npF3d/4/,因此任何人都可以使用该代码。在我的浏览器中,在任何情况下都没有按钮对文本区域产生任何影响。
我将不胜感激有关此问题的任何帮助。