2015-02-24 63 views
5

我使用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

回答

6

這將讓你這樣做:

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

-1

您的程序正確。我想你可以使用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