以编程方式触发Ctrl + S.

时间:2011-12-29 13:00:08

标签: javascript events keyboard

我想使用JavaScript发出 Ctrl S keydown事件。理想情况下,该解决方案适用于大多数现代浏览器(最高为IE 9)。

我正在编写测试,需要测试我的处理程序以获取键绑定。 Ctrl S 只是一个例子,它可以是任何带有修饰键的键绑定。我知道keyEvent.initKeyboardEvent()方法,但我无法正确使用它来触发在键盘上按下键后打印完整键盘事件时遇到的同一事件。

2 个答案:

答案 0 :(得分:7)

  

我想发出 Ctrl S keydown事件

你的意思是,为了触发浏览器"另存为"对话还是什么?出于安全原因,这是不可能的。如果它是一个巨大的安全问题 - 想象一下:每个网站都可以任意触发浏览器功能。

答案 1 :(得分:1)

你不能也不能出于安全原因(正如Pekka已经指出的那样)。您将始终需要用户之间的互动。此外,想象一下浏览器供应商被用户起诉的可能性,因为各种程序化的键盘事件都会导致欺骗攻击。

有关替代方案和更多详细信息,请参阅此post。总有基于闪存的复制粘贴。这是一个优雅的example。与此同时,它也证明了网络正在逐渐远离插件供应商。

如果opt-in CORS policy以编程方式访问远程内容,则应用类似的安全思维模式。

答案是:
在正常情况下,无法以编程方式触发沙盒浏览器环境中的输入键

底线:我并不是说将来无法通过特殊的浏览器模式和/或特权来实现游戏的最终目标或类似的用户体验。但是,在输入此类模式之前,系统会要求用户提供权限和风险,类似于Fullscreen API model。 (我添加了一个谷歌搜索链接,因为它整齐地包含搜索结果中的相关文本行)

enter image description here