【发布时间】:2013-07-26 16:36:35
【问题描述】:
尽管有很多关于如何在 JS 中模拟按键(keydown/keypress)的文章,但似乎没有一种解决方案适用于我正在使用的浏览器(Firefox ESR 17.0.7、Chrome 28.0.1500.72、IE 10 )。我测试的解决方案取自here、here 和here。
我要做的是模拟文本区域/输入中的任何击键。虽然我可以附加/删除直接更改“值”的字符,但我看不到任何选项,只能输入模拟“上”、“下”、“主页”等键。
根据documentation,应该很简单。例如:
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”按键事件,我的处理程序可以捕捉到它。但是,它不会以任何方式影响 textarea - 不会出现新行。其他键码也一样:字符不出现,箭头不改变插入符号的位置等。
我已将代码扩展 Orwellophile 并将其发布到 http://jsfiddle.net/npF3d/4/ ,因此任何人都可以使用该代码。在我的浏览器中,在任何情况下都没有按钮对文本区域产生任何影响。
我将不胜感激有关此问题的任何帮助。
【问题讨论】:
标签: javascript input keydown simulate