2009-10-30 23 views
0

我試圖使用jQuery攔截我的網頁上控制-A按鍵,就像這樣:我可以攔截IE上的控件按鍵嗎?

$(document).keypress(function (event) { 
    if (event.ctrlKey && (event.which == 65 || event.which == 97)) { 
     event.preventDefault(); 
     // ... 
    } 
}); 

這個工作在Firefox,但在IE7,我的事件處理程序不會被調用,所有的頁面上的文本被選中(而不是事件處理程序的Firefox)。

有沒有什麼辦法可以攔截IE上的控件-A?

+0

我認爲問題是你的參數名稱。只是稱之爲'e'而不是預定義的'event' – 2009-10-30 21:09:59

回答

6

此作品在FF 3.5和IE7對我來說:

$(function() { 
     var isCtrl = false; 

     $(document).keyup(function (e) { 
      if(e.keyCode == 17) 
       isCtrl = false; 
     }).keydown(function (e) { 
      if(e.keyCode == 17) 
       isCtrl = true; 

      if(e.keyCode == 65 && isCtrl == true) { 
       alert('Intercepted CTRL+A'); 
       e.preventDefault(); 
      } 
     }); 
    }); 
+0

超級,謝謝!它甚至可以在IE6中運行。 – Sean 2009-10-30 21:36:02

+0

演示:http://jsfiddle.net/zDGPG/ – 2013-05-24 17:31:20

+0

在嘗試做同樣的w/Ctrl + A時偶然想到。這個很酷的技巧似乎不再適用於Edge或Windows 10上的IE11。令我感到難過的是,關於在Linux上開發的唯一令人厭惡的部分是,當您以M $進行測試時,您會發現8個適用於每個瀏覽器和平臺的東西,除IE /邊緣。 – drew010 2017-06-24 00:52:29

0

如果您在事件處理程序返回false,那麼將取消瀏覽器的行爲。根據瀏覽器的不同,其行爲可能會有所不同(例如,在keydown取消它之後,按鍵仍然會在firefox上觸發,而IE會停止)。