是否有可能在网页处理之前修改KeyboardEvent?

时间:2018-01-14 09:24:07

标签: javascript google-chrome-extension keyboard-events browser-extension

我试图弄清楚是否可以重新映射由Web应用程序定义的键盘快捷方式,因为这可以解决此问题:Frustration over Shift+Space YouTube keyboard shortcut when creating subtitles

所以,我在想:Chrome / Mozilla / ...扩展程序是否有可能捕获并修改KeyboardEvent(在这种情况下,只需清除空格字符的Shift修饰符)在事件传递给Web应用程序之前?

我一直在寻找这样的延伸,但还没有成功。原则上是否可以这样做?

编辑(回复):我担心发送新活动不会产生预期效果,请参阅此wontfix bugreporta note here

  

手动触发事件不会生成默认操作   与该事件相关联。例如,手动触发键事件   不会导致该字母出现在焦点文本输入中。在里面   在UI事件的情况下,出于安全原因,这很重要   防止脚本模拟与之交互的用户操作   浏览器本身。

因此,在没有Shift修饰符的情况下重新发送相同的键并不起作用(请参阅此小提琴https://jsfiddle.net/rzh1p5qn/2/)。

1 个答案:

答案 0 :(得分:1)

在JavaScript中,你可以做很多奇怪的事情。不推荐它,它可以制造错误,但你可以做到,它可以工作。

您只需要用document.addEventListener替换它即可 你的功能(只需保留原始功能的副本)。为此,您应首先在页面上添加脚本(在任何其他脚本附加事件之前)。

您的功能将有自己的条件,然后执行原始功能。

您自己的函数将注册用户函数,但您应将其包装在更改事件对象的条件中。

您可以在触发原始处理程序之前添加任何条件或更改事件。