initKeyEvent按键仅适用于FireFox.需要一个跨浏览器的解决方案
initKeyEvent keypress only works in FireFox. need a cross browser solution!
这是我的代码:
<script>
function f(){
var i=document.getElementById("i");
i.focus();
var evt = document.createEvent("KeyboardEvent");
evt.initKeyEvent("keypress", true, true, null, false, false, false, false,
0, 32);
i.dispatchEvent(evt);
}
</script>
<body onload="f();">
<input id="i"/>
</body>
在firefox中打开脚本,它就可以工作了。输入框中的空格表示代码已经工作。
然而,上面的代码在Chrome、Safari、Opera等中不起作用。
我们如何修改上面的代码使其在这些浏览器中工作?
对于基于Webkit的浏览器(Safari/Chrome),事件初始化调用的外观应该有所不同(请参阅https://bugs.webkit.org/show_bug.cgi?id=13368):
initKeyboardEvent(in DOMString typeArg,
in boolean canBubbleArg,
in boolean cancelableArg,
in views::AbstractView viewArg,
in DOMString keyIdentifierArg,
in unsigned long keyLocationArg,
in boolean ctrlKeyArg,
in boolean shiftKeyArg,
in boolean altKeyArg,
in boolean metaKeyArg,
in boolean altGraphKeyArg);
添加到Alexander的响应中:
有一个webkit错误,使用initKeyboardEvent初始化的键盘事件得到了不正确的keyCode和charCode 0:https://bugs.webkit.org/show_bug.cgi?id=16735
这个SO的回答中发布了一个有效的解决方案。
相关文章:
- 从imgur api的另一个浏览器拖放图像
- JavaScript 不适用于 IE9,但每隔一个浏览器?怎么了
- 接受从另一个浏览器窗口拖放图像
- 将键盘和鼠标事件从一个浏览器选项卡发送到另一个
- 从另一个浏览器访问一个浏览器中的html文档
- 自定义Div滑块运行过快,但仅当从另一个浏览器选项卡返回时
- 如何检测浏览器窗口是否已从另一个浏览器窗口打开
- 我在同一域中并排打开了两个浏览器.我想将一个网格的选定行拖到另一个浏览器.可能吗
- 创建一个浏览器以在 ASP.NET 的网页中加载网站
- 服务器以 Status=304 响应一个浏览器的 GET 请求,以 200 响应另一个浏览器的 GET 请求
- 您能否检查 Web 应用程序是否已在另一个浏览器选项卡上运行
- jQuery .fadeIn() 覆盖(在另一个浏览器选项卡查看之后)
- PHP-如何从列表视图在另一个浏览器窗口中显示详细记录字段
- 一个浏览器可以处理多少DOM元素
- 我们可以期待一个浏览器javascript API到DNS解析程序
- 使用Javascript关闭另一个浏览器选项卡
- 返回一个浏览器返回按钮
- 一个浏览器窗口中的所有选项卡共享一个JavaScript线程
- 通过窗口.当两个浏览器完全独立时,从一个浏览器打开对象到另一个浏览器
- Javascript -在另一个浏览器/页面中滚动底部