2013-04-09 84 views
4

我有一個腳本,應該打開一個網頁的一部分,並保存更改Ctrl + n和Ctrl + s repectivly我得到它在IE中工作,但它似乎並沒有在Firefox和鉻工作。有任何想法嗎?在Firefox和鉻覆蓋快捷鍵

我的搭車功能。

function prevent(e) 
{ 
try{e.stopPropagation();}catch(ex){} 
try{e.preventDefault()}catch(ex){} 
try{if (e.preventDefault) 
     e.preventDefault(); 
    else { 
     e.cancelBubble = true; 
     e.returnValue = false; 
     e.keyCode = 0; 
    }} catch(ex){} 
} 
+0

這可能有幫助:http://stackoverflow.com/q/7295508/212869(或不是情況可能) – NickSlash 2013-04-09 20:36:25

+0

我想避免JQuery我已經看過那一個。 – wolfcall 2013-04-09 20:47:21

+0

我在想更多的答案,說明一些瀏覽器快捷方式不能真正被覆蓋,也可以在普通的JavaScript中完成任何在jQuery中完成的任務 – NickSlash 2013-04-09 20:48:57

回答

8

我看到了同樣的問題。某些瀏覽器不允許您捕獲某些快捷方式。看看這個https://stackoverflow.com/a/7296303/1366887

一些組合鍵只供在Chrome 4,但無法在Chrome 3.看這裏:https://groups.google.com/a/chromium.org/forum/?fromgroups=#!topic/chromium-bugs/Ntc1byZXHfU

這裏是JavaScript:

$(window).keydown(function(event) { 
    if(event.ctrlKey && event.keyCode == 84) { 
    console.log("Hey! Ctrl+T event captured!"); 
    event.preventDefault(); 
    } 
    if(event.ctrlKey && event.keyCode == 83) { 
    console.log("Hey! Ctrl+S event captured!"); 
    event.preventDefault(); 
    } 
}); 

我已經使用這個無數次,並且它工作得很好。

這裏是另一個rescource你可以看看:http://unixpapa.com/js/key.html

沒有jQuery的:

onkeydown = function(e){ 
    if(e.ctrlKey && e.keyCode == 'S'.charCodeAt(0)){ 
    e.preventDefault(); 
    //your saving code 
    } 
} 

這裏是它的一個JSFIDDLE工作。

+0

如果不知道問題是什麼。但是當我重寫它開始工作... – wolfcall 2013-04-10 20:36:28

+0

我在我的代碼在Firefox中有一個奇怪的問題。當我運行JSFiddle時,它沒有問題,但是當我將它添加到我的網站上的js文件時,它仍然會打開新標籤,你有沒有看過這個? – wolfcall 2013-04-11 18:14:19

+0

@wolfcall你確定你有JS文件鏈接?另外,如果他們更新了,這可能與新的Firefox有關。確保你的js正在運行。 – 2013-04-11 18:38:19