【发布时间】:2008-12-05 22:58:14
【问题描述】:
如何以编程方式从 Safari 中运行的 Javascript 代码生成按键事件?看起来 WebKit 正在使用 DOM 3 级模型从 Javascript 创建键盘事件,而 DOM 3 级键盘事件模型不支持 keypress 事件。我还有其他方法可以使用吗?
我正在寻找尽可能纯粹的 Safari/WebKit DOM 解决方案。我真的不想修改网页,也不想添加对外部库的依赖。我需要激活任何现有的按键处理程序,因此添加新的处理程序并直接调用它是行不通的。
看起来 WebKit 在其 UIEvent 类中定义了按键事件的 keyCode 和 charCode 属性,但它们是只读的。有没有办法设置这些属性?以下方法不起作用:
var evt = document.createEvent('UIEvents');
evt.initUIEvent('keypress', true, true, window, 0);
evt.keyCode = 114; // 'r'
evt.charCode = 114;
alert("keyCode = " + evt.keyCode + ", charCode = " + evt.charCode); // both 0
在initUIEvent的调用中设置detail属性似乎也没有效果。
【问题讨论】:
-
列出的任何解决方案对您有用吗?寻求帮助然后保释是不好的。如果答案不是您想要的,请尝试澄清。
-
它在 safari 中不起作用,但在 firefox 中可以正常工作。
标签: javascript safari