“如何禁用”;重新打开最后一个选项卡";在Microsoft Edge(Ctrl+;Shift+;T)中使用JavaScript?
我们有一个web应用程序,它定义了一组键盘快捷键。其中一个选项是Ctrl+Shift+T。问题是Microsoft Edge将此键组合挂起以重新打开以前关闭的选项卡或窗口,然后切换到该选项卡或窗口 参考文献: 我玩了一会儿,试图用JavaScript绕过这个问题:“如何禁用”;重新打开最后一个选项卡";在Microsoft Edge(Ctrl+;Shift+;T)中使用JavaScript?,javascript,keyboard-shortcuts,microsoft-edge,keyboard-events,Javascript,Keyboard Shortcuts,Microsoft Edge,Keyboard Events,我们有一个web应用程序,它定义了一组键盘快捷键。其中一个选项是Ctrl+Shift+T。问题是Microsoft Edge将此键组合挂起以重新打开以前关闭的选项卡或窗口,然后切换到该选项卡或窗口 参考文献: 我玩了一会儿,试图用JavaScript绕过这个问题: Ctrl+Shift+T var-tKey=84; 功能日志键(事件){ console.log(event.type+“:”+event.keyCode); 如果(event.keyCode===tKey){ event.prev
Ctrl+Shift+T
var-tKey=84;
功能日志键(事件){
console.log(event.type+“:”+event.keyCode);
如果(event.keyCode===tKey){
event.preventDefault();
event.stopPropagation();
setTimeout(函数(){window.focus();},200);
}
}
document.documentElement.addEventListener(“向下键”,日志键);
document.documentElement.addEventListener(“按键”,日志键);
document.documentElement.addEventListener(“keyup”,logKeys);
我希望使用JavaScript“取消”键盘事件,以便Edge不会重新打开以前打开的选项卡或窗口。边缘键盘快捷键仍然优先。事实上,浏览器控制台甚至没有为T键注册日志消息,如event.keyCode
84所示
也许我的JavaScript排骨有点生锈了
当使用JavaScript按Ctrl+Shift+T时,是否有方法防止Edge重新打开上一个选项卡或窗口?这可以使用(目前处于试验阶段),Chrome和Edge中提供(但目前不在IE、Firefox或Safari中提供): 丰富的交互式网站、游戏和远程桌面/应用程序流媒体体验希望提供身临其境的全屏体验。为了实现这一点,网站需要在全屏模式下访问特殊键和键盘快捷键,以便用于导航、菜单或游戏功能。可能需要的一些键示例有Escape、Alt+Tab、Cmd+`和Ctrl+N 默认情况下,这些键对web应用程序不可用,因为它们由浏览器或底层操作系统捕获。键盘锁API使网站能够捕获和使用操作系统允许的所有可用密钥 请注意,出于可用性原因,此API仅在应用程序使用全屏API启动全屏模式时有效。您不能干扰标准浏览器键盘快捷键,否则: 现代用户代理中有两种不同类型的全屏:JavaScript启动的全屏(通过[fullscreen]API)和用户启动的全屏(当用户使用键盘快捷键进入全屏时)。用户启动的全屏通常称为“F11”全屏,因为这是用于进入和退出全屏模式的常用快捷键 F11全屏和JavaScript(JS)全屏的行为方式不同。当用户进入F11全屏时,他们只能通过与输入时相同的键盘快捷键退出它——在这种情况下,exitFullscreen()函数将不起作用。此外,通常为JS fullscreen触发的全屏事件不会为F11 fullscreen发送 由于这些差异(以及F11全屏没有标准快捷键),键盘锁定API仅在JavaScript启动的全屏激活时有效。在F11全屏显示期间,不会对键盘事件进行键盘锁定处理 因此,在您的情况下,要捕获Ctrl+Shift+T,您需要使用全屏API进入全屏模式(您可能希望首先获得用户的同意;意外进入全屏模式将是一种糟糕的用户体验),然后使用键盘锁定API锁定T键:
document.documentElement.requestFullscreen().then(() => {
console.log("In fullscreen.");
navigator.keyboard.lock(["KeyT"]).then(() => {
console.log("Ctrl+Shift+T locked");
});
})
更多信息: