The first problem is that there is no standard for keystroke events, according to the specification: the event model that contains input devices such as keyboards will be interpreted later in the DOM specification.
As we have learned, browsers do not have a standard at the beginning of the design, and we all like to do experiments, the final product although useful, but certainly caused a compatibility problem. The key issue is no exception: There are two properties that detect what key the user pressed, although there are reasons why two attributes are required, but not all browsers support it.
In addition, there are some important differences between KeyPress and KeyDown and KeyUp.
Finally, the difference between Windows and Mac, on the Mac to detect what the user pressed the key is more than in Windows difficult n times.
KeyCode and CharCode
The two attributes that can detect what the user has pressed on the key are KeyCode and charcode. Simply put: KeyCode is used to detect that the user actually presses the key on the keyboard, while CharCode is the ASCII code that gives the character to be typed. There are some minor issues to note: The KeyCode of uppercase A and lowercase a is the same, because they are a key on the keyboard; but CharCode is different because they are two distinct characters.
IE and opera do not support CharCode. However, they will hold the character information in the KeyCode, but only in the onkeypress case, the Onkeydown/up case contains the information of the key.
Character and number keys
Let's start with a simple example. The ASCII code for lowercase A is 97, and the upper case is 65. So in both cases, when the user knocks the same key on the keyboard, when the key value is 65 (equivalent to an uppercase a)
KeyCode
CharCode
Therefore, in the case of onkeydown/up, you can get the key value from the KeyCode. In onkeypress case, want to get the character value to use: Evt.charcode | | Evt.keycode.
Punctuation
I decided not to test the punctuation key. I suspect that this is related not only to the browser and the operating system, but also to the keyboard settings and the default language. I generally use the Dutch version of Windows, if compared with the United States version of the 101-key keyboard is very different, I do not feel surprised.
such as shift+, the key should come out, but the result of the ASCII code I tested was '? ' Of When I found out about the problem, I decided not to waste my time on the punctuation key. The
Special key
Function key is a key that cannot be printed but has a certain function. such as shift, ESC, enter, and so on are all function keys.
Some instructions:
1, General, Mac reliability is worse than Windows, some keys may not detect
2, IE does not trigger the following key KeyPress event: Delete, end, enter, escape, function key, Home, INSERT, pageup/down and tab.
3, under the onkeypress event, Safari gives the following keys a very strange keycode value: Delete, end, function key, home, and Pageup.down. But it's normal under the onkeydown/up. The
4, Alt,cmd,ctrl, and Shfit keys are not detectable on the Mac, except opera below. However, you can use Altkey,ctrlkey,shfitkey these attributes.
If you need to detect these keys, you can probe the keycode on the onkeydown/up below to help yourself, onkeypress and charcode forget it. The
text has a list of large key values, as well as a test box, where interested child shoes can be used.
Translate address: http://www.quirksmode.org/js/keys.html
Reprint Please keep the following information
Author: North Jade (TW: @rehawk)