如何防止从浏览器触发默认快捷方式

how to prevent the default shortcut triggering from browser

本文关键字:默认 快捷方式 浏览器 何防止      更新时间:2023-09-26

好吧,我正在尝试为Web应用程序创建自定义快捷方式。但是我有一个小问题(我试图找到解决方案,但我只找到了preventDefaultshortcut.add,我不太了解第二个(

我想知道如何在不调用浏览器快捷方式的情况下使用代码的自定义快捷方式。如果我使用shift key默认的镜头切割不会禁用大写字母。

非常感谢您的帮助,来自智利的问候。

var menu_abierto=false;
$(document).on('keypress',function(e){
    if(e.which==69 && e.ctrlKey && menu_abierto==false){
      $('.btn-1,.btn-2 ,.btn-3').prop('disabled',true);    
      $('#lista-emergencias').show();
      MenuLateralIzq();
      listarEmergencias();
      menu_abierto=true;
    } else if(e.which==69 && e.ctrltKey){
      $('.btn-1 ,.btn-2, .btn-3').prop("disabled",false);
      $('#lista-emergencias ul li').remove();
      $('#lista-emergencias ul hr').remove();
      $('#lista-emergencias').hide();
      OcultarMenuIzq();
      menu_abierto=false;
    }
});

您必须添加e.preventDefault()以防止默认浏览器操作,然后出现自定义操作:

if( e.target.tagName.toUpperCase() != 'INPUT' ){
   if(e.which==69 && e.ctrlKey && menu_abierto==false){
        e.preventDefault();
        $('.btn-1,.btn-2 ,.btn-3').prop('disabled',true);    
        $('#lista-emergencias').show();
        MenuLateralIzq();
        listarEmergencias();
        menu_abierto=true;
    } else if(e.which==69 && e.ctrltKey){
        e.preventDefault();
        $('.btn-1 ,.btn-2, .btn-3').prop("disabled",false);
        $('#lista-emergencias ul li').remove();
        $('#lista-emergencias ul hr').remove();
        $('#lista-emergencias').hide();
        OcultarMenuIzq();
        menu_abierto=false;
    }
}

如果要对输入禁用此功能,请添加if( e.target.tagName.toUpperCase() != 'INPUT' ){

解释:

e.target表示当前选定的元素,tagName获取此元素的类型,以防输入字段将返回INPUTtoUpperCase()只是为了确保返回的INPUT字符串处于模式UpperCase!= 'INPUT'的意思是不输入,换句话说,如果所选元素不是输入字段,那么您可以用自定义快捷方式替换浏览器快捷方式。

检查SO问题/答案javascript捕获浏览器快捷方式(ctrl + t/n/w(。

希望这有帮助。

您需要设置 2 件事:

e.stopPropagation((

防止当前事件的进一步传播。

e.preventDefault((

如果事件可取消,

则取消事件,而不停止事件的进一步传播。