用我自己的自定义快捷方式覆盖浏览器快捷方式

问题描述:

我使用C#创建了一个Asp.net MVC4 Web应用程序,我们可以动态地为所有页面创建键盘快捷方式。我们可以立即使用该键盘快捷方式转到特定页面。并且问题是每个浏览器都有自己的默认shortcuts.For例如用我自己的自定义快捷方式覆盖浏览器快捷方式

如果我创建了键盘快捷键CTRL +一个应该重定向到我自己的自定义页面。但默认浏览器快捷方式CTRL + A改为从页面中选择全部。

我想禁用默认浏览器快捷方式优先我自己的自定义快捷方式。是否有任何方式来实现这些?对于我的自定义快捷方式,我使用jquery keyUp event.I在互联网上搜索,那里的建议是在jQuery的keyUp事件,使用preventDefault()。但为访问我自己的自定义快捷键,我使用keyUp事件。所以告诉我建议,以禁用默认所有浏览器中的浏览器快捷方式都可以通过C#,jquery或任何其他方式进行。

+0

我敢肯定,这是不可能的,至少它不会在所有浏览器中可靠地工作。您可以使用'keydown'来监听关键事件,并检查事件以查看CTRL是否被按下,但浏览器镶边将覆盖您在JS中创建的所有快捷键。 – 2015-02-24 09:59:01

这将让你这样做:

e.ctrlKey && String.fromCharCode(kc).toUpperCase() 

检查按Ctrl +一个被按下。

$(document).on('keydown', function(e) { 
 
    var kc = e.which || e.keyCode; 
 

 
    if (e.ctrlKey && String.fromCharCode(kc).toUpperCase() == "A") { 
 
    e.preventDefault(); 
 
    console.log(String.fromCharCode(kc).toUpperCase()); 
 
    window.location.href = 'your url here'; 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
adfasfasdfsda
你应该在文档中点击对焦,然后你可以测试它

+0

如果Ctrl + F1是我的快捷键,但是在IE默认情况下会打开新的IE浏览器。我试过这段代码,但仍然没有用。 – venki 2015-02-24 10:24:02

+0

你的答案是实现快捷键像ctrl + A,ctrl + P ...但是来到Ctrl + F1到F12或Alt + F1到F12或Shift + F1到F12是很有用的,我无法实现这一点。 – venki 2015-02-25 06:25:31

您的程序正确。我想你可以使用ASCII值来处理这样的事情,例如:我用这个按enter键。

$('body').on('keypress', '#Selector-Id', function(e) { 
if (e.which == 13) { 
alert("Hi"); 
} 
}); 
+0

这些代码中的'.scratch-input'是什么? – venki 2015-02-24 10:32:37

+0

只需找到控制的ascii代码,并给出这些值而不是13(这是输入按钮ascii代码),它很好地帮助我猜! – Ila 2015-02-24 10:36:31