Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否可以在网页处理键盘事件之前修改它?_Javascript_Google Chrome Extension_Keyboard Events_Browser Extension - Fatal编程技术网

Javascript 是否可以在网页处理键盘事件之前修改它?

Javascript 是否可以在网页处理键盘事件之前修改它?,javascript,google-chrome-extension,keyboard-events,browser-extension,Javascript,Google Chrome Extension,Keyboard Events,Browser Extension,我试图弄清楚是否可以重新映射web应用程序定义的键盘快捷键,因为这样可以解决此问题: 所以,我在想:对于Chrome/Mozilla/,有可能吗。。。在将事件传递到web应用程序之前,捕获和修改KeyboardEvent(在这种情况下,只需清除空格字符的Shift修饰符)的扩展 我一直在寻找这样的扩展,但还没有成功。原则上可以这样做吗 编辑(响应):我担心发送新事件不会产生预期效果,请参见以下内容: 手动触发事件不会生成默认操作 与该事件有关。例如,手动触发关键事件 不会导致该字母出现在聚焦文本

我试图弄清楚是否可以重新映射web应用程序定义的键盘快捷键,因为这样可以解决此问题:

所以,我在想:对于Chrome/Mozilla/,有可能吗。。。在将事件传递到web应用程序之前,捕获和修改
KeyboardEvent
(在这种情况下,只需清除空格字符的
Shift
修饰符)的扩展

我一直在寻找这样的扩展,但还没有成功。原则上可以这样做吗

编辑(响应):我担心发送新事件不会产生预期效果,请参见以下内容:

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


因此,在没有Shift修饰符的情况下重新分派同一个键对我来说是不起作用的(参见此提琴)。

在JavaScript中,您可以做许多奇怪的事情。这是不推荐的,它可以使错误,但你可以这样做,它可以工作

您只需将
document.addEventListener
替换为 您的函数(只需保留原始函数的副本)。为此,您应该首先在页面上添加脚本(在任何其他脚本附加事件之前)

您的函数将有自己的条件,然后执行原始函数

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


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

是的,您可以在不使用Shift键的情况下重新发出另一个KeyboardEvent,并在原始事件上使用preventDefault。@wOxxOm谢谢,请您将其扩展为一个答案,可能需要代码?谢谢!原则上,当按下该组合键时,该输入上的事件侦听器可以停止事件的传播。快捷方式侦听器可能已附加到窗口。不确定他们听到的确切事件though@wOxxOm不幸的是,重新分派事件似乎不起作用:(请参阅更新。如果document.activeElement是可编辑的输入或内容,则可以使用document.execCommand('insertText',false,event.char),也可以查看@Aminadav的答案-如果你有兴趣,可以使用它,但是如何在youtube脚本之前运行脚本?有很多方法。例如,你可以将脚本设置为在
文档开始时执行(