EventTarget事件:keydown
EventTarget事件 - keydown
按下某个键时会触发该keydown事件。
与keypress事件不同,无论是否生成字符值,都会为所有键触发keydown事件。
基本信息
接口 | KeyboardEvent |
---|---|
是否冒泡 | 是 |
是否可取消 | 是 |
目标 | Document , Element |
默认操作 | 变化:keypress 事件;启动文本撰写系统;blur 和focus 事件;DOMActivate 事件;其他事件 |
属性
属性 | 类型 | 描述 |
---|---|---|
target (只读) | EventTarget | 事件目标(DOM树中最顶层的目标)。 |
type (只读) | DOMString | 事件的类型。 |
bubbles (只读) | Boolean | 事件是否正常冒泡。 |
cancelable (只读) | Boolean | 该事件是否可取消。 |
view (只读) | WindowProxy | Document.defaultView (window 文件)。 |
detail (只读) | long (float ) | 0 。 |
target (只读) | EventTarget (DOM元素) | 聚焦元素处理key事件;如果没有合适的输入元素,则为根元素。 |
char (只读) | DOMString (string) | key的字符值。如果key对应于可打印字符,则此值是包含该字符的非空Unicode字符串。如果key没有可打印的表示,则为空字符串。 注意:如果该key用作插入多个字符的宏,则此属性的值是整个字符串,而不仅仅是第一个字符。 |
key (只读) | DOMString (string) | 由事件所表示的key的key值。如果值具有打印表示,则此属性的值与char 属性相同。否则,它是Key值中指定的key值字符串之一。如果无法识别key,则为“Unidentified”字符串。 |
code (只读) | DOMString (string) | 保存一个标识正在按下的物理key的字符串。该值不受当前键盘布局或修改器状态的影响,因此特定key将始终返回相同的值。 |
charCode (只读) | unsigned long (int ) | key的Unicode引用号;此属性仅由keypress 事件使用。对于char 属性包含多个字符的键,这是该属性中第一个字符的Unicode值。警告:不推荐使用此属性;你应该使用 char ,如果可以的话。 |
keyCode (只读) | unsigned long (int ) | 一种与系统和实现有关的数字代码,用于标识按下的key的未修改值。这通常是与key对应的十进制ASCII(RFC 20)或Windows 1252代码。如果无法识别key,则此值为0 。警告:不推荐使用此属性;你应该使用 key ,如果可以的话。 |
which (只读) | unsigned long (int ) | 一种与系统和实现有关的数字代码,用于标识按下的key的未修改值;这通常与keyCode 是一样的。警告:不推荐使用此属性;你应该使用 key ,如果可以的话。 |
location (只读) | long (float ) | 密钥在设备上的位置。 |
repeat (只读) | Boolean | 如果一个key被按下足够长的时间以触发按键重复,则为true ;否则为false 。 |
locale (只读) | DOMString | key事件的语言代码(如果有);否则,为空字符串。 |
ctrlKey (只读) | Boolean | 如果在触发事件时控制键已关闭,则为true ;否则为false 。 |
shiftKey (只读) | Boolean | 如果在事件被触发时shift键已关闭,则为true ;否则为false 。 |
altKey (只读) | Boolean | 如果事件被触发时alt键已关闭,则为true ;否则为false 。 |
metaKey (只读) | Boolean | 如果在触发事件时meta键已关闭,则为true ;否则为false 。 |
笔记
请注意 keydown和keyup 提供一个代码,指示按下哪个键,而keypress指示输入了哪个字符。例如,小写“a”将通过keydown和keyup报告为65,但是会通过keypress报告为97。所有事件都将大写的“A”报告为65。
示例
每当您按下<input>元素内的键时,此示例都会记录该KeyboardEvent.code值。
HTML
<input placeholder="Click here, then press down a key." size="40">
<p id="log"></p>
JavaScript
const input = document.querySelector('input');
const log = document.getElementById('log');
input.addEventListener('keydown', logKey);
function logKey(e) {
log.textContent += ` ${e.code}`;
}
规范
DOM L3
浏览器兼容性
从Gecko 25开始,调用keydown事件的preventDefault()会阻止按下keypress事件。这是D3E规范的有效行为,其他主要的Web浏览器也是这样做的。 另一方面,即使在前面的keydown事件的preventDefault()被调用的情况下,Gecko 24或更早的版本调度keypress事件 - 尽管在这种情况下keypress事件的defaultPrevented属性为true。