2012-03-25 53 views
0

即使未选中我的选项卡,我也希望能够访问键盘快捷键 - 例如,可以具有“即按即说”功能。我想这会首先要求获得许可,就像全屏API一样?我基本上只是想要求一个函数被称为一个组合键,像这样:javascript键盘快捷键/背景中的热键

if (requestKeyboardShortcut("Ctrl+C", function() { 
     //key pressed 
    }, function() { 
     //key released 
    })) { 
    //request succeeded 
} 

这可能吗?它是否被考虑?谢谢。

回答

0

要添加跨页功能,你会需要依赖诸如Java,AIR或Silverlight等浏览器插件,即使如此,我也非常确定这种功能不受支持。无论您选择哪个,都需要提升权限才能捕获事件。

我知道某些浏览器已经打开了它们的JavaScript API来为特定类型的请求提升权限,但跨页事件捕获的主要原因是为了防止跨页面键盘记录的可能性。

想象一下,您使用一个网站捕获跨页面的关键事件,然后您打开一个选项卡并登录到Gmail或您的银行帐户。即使你批准了一个网站,它可能会在未来受到影响。

+0

那么,如果你看到我的例子,它只是请求访问某个组合键,而不是每个按键,这不会真正危及任何东西。 (你不会知道在另一个页面上按下的每个按键,只是按下了某个组合键。) – CodeRarity 2012-03-26 00:36:40

+0

@CodeRarity,但这根本不是JavaScript如何绑定关键事件,并且可能仍然构成安全威胁。 – zzzzBov 2012-03-26 00:37:31

+0

我明白你的意思了,虽然有点令人失望。 – CodeRarity 2012-03-26 01:36:10

0

警告吞吐者,我不是专家,所以采取以下一粒盐。

我不相信浏览器会让你像你想要的那样跨越标签来做到这一点。

可能做的是创建一个浏览器特定的插件,试图捕获所有的Ctrl + C事件,然后打开有问题的选项卡。如果你需要更多的目标浏览器,你可能想看看一个跨浏览器的插件抽象层像BabelExt

祝你好运找到最终的解决办法:)

+0

但是,当浏览器最小化时,它仍然可以工作吗?通过推说话的例子,你可以在另一个窗口中玩游戏。看起来,这可能是唯一的选择。 – CodeRarity 2012-03-26 00:33:39

+0

@CodeRarity不,我不这么认为。 Opera实际上可能具有它们的widget引擎的功能。 – Jan 2012-03-26 04:25:54