2010-06-16 62 views
1

此JavaScript代码在OSX 10.5.8上的Firefox 3.6.3上的“Shift + /”组合键总是返回零。但它返回期望值191在Chrome上OSX/MAC在Mac OSX的Firefox中未使用JavaScript检测到Shift + /组合键

GetKeyCode = function(e) { 
     var code = 0; 
     if (!e) { 
      e = window.event 
     } 
     if (e.keyCode) { 
      code = e.keyCode; 
     } else if (e.which) { 
      code = e.which; 
     } 
     return code; 
    }; 

GetKeyCode正从jQuery的的keydown事件。

jQuery(document).keydown(function(e) { ...... }); 

有没有错误,或者我在这里丢失了一些非常简单的东西? 请帮忙

在此先感谢。 -Parimal Das

+0

如何'GetKeyCode'附?哪个事件在哪个元素上?有关键盘事件的更多信息,请参阅http://unixpapa.com/js/key.html。 – 2010-06-16 13:40:20

+0

它是一个keydown事件。我也更新了这篇文章。 谢谢。 – 2010-06-16 13:51:52

+0

你为什么做这个社区Wiki? – 2010-06-16 14:23:20

回答

0

如果它来自jQuery,那么您应该只能使用e.which。实际上,寻找e.keyCode可能会导致此问题,因为如果Shift键已关闭,则不会填充它。请参阅the Mozilla documentation

+0

我认为你把'keyCode'与'charCode'混淆了:''charCode'从未在keydown和keyup事件中设置,在这种情况下''keyCode'被设置。再看[event.keyCode](https://developer.mozilla.org/en/DOM/event.keyCode):''keyCode'总是在keydown和keyup事件中设置的。在这些情况下,'charCode'是从未设置。“ – 2010-06-16 17:30:43

+0

但是你说得对jQuery规范化'event.which':“虽然浏览器使用不同的属性来存储这些信息,但jQuery规范化了'.which'属性,所以我们可以可靠地使用它来检索关键代码。键盘上的按键,包括特殊按键的代码,例如箭头,为了捕捉实际的文本输入,'.keypress()'可能是更好的选择 – 2010-06-16 17:35:53

+0

实际上,除了某些边缘情况,例如修改键,我会避免keydown/keyup如果可以,坚持按键。 – Neil 2011-01-20 21:07:19