Skip to content

Commit 0ed0aad

Browse files
Justineoyyx990803
authored andcommitted
fix: fix keyName checking for space and delete in IE11 (#9150)
fix #9112
1 parent f077ed1 commit 0ed0aad

File tree

2 files changed

+16
-4
lines changed

2 files changed

+16
-4
lines changed

src/compiler/codegen/events.js

+4-2
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,15 @@ const keyNames: { [key: string]: string | Array<string> } = {
2222
esc: ['Esc', 'Escape'],
2323
tab: 'Tab',
2424
enter: 'Enter',
25-
space: ' ',
25+
// #9112: IE11 uses `Spacebar` for Space key name.
26+
space: [' ', 'Spacebar'],
2627
// #7806: IE11 uses key names without `Arrow` prefix for arrow keys.
2728
up: ['Up', 'ArrowUp'],
2829
left: ['Left', 'ArrowLeft'],
2930
right: ['Right', 'ArrowRight'],
3031
down: ['Down', 'ArrowDown'],
31-
'delete': ['Backspace', 'Delete']
32+
// #9112: IE11 uses `Del` for Delete key name.
33+
'delete': ['Backspace', 'Delete', 'Del']
3234
}
3335

3436
// #4868: modifiers that prevent the execution of the listener

test/unit/modules/compiler/codegen.spec.js

+12-2
Original file line numberDiff line numberDiff line change
@@ -333,12 +333,22 @@ describe('codegen', () => {
333333
// multiple keycodes (delete)
334334
assertCodegen(
335335
'<input @input.delete="onInput">',
336-
`with(this){return _c('input',{on:{"input":function($event){if(!('button' in $event)&&_k($event.keyCode,"delete",[8,46],$event.key,["Backspace","Delete"]))return null;return onInput($event)}}})}`
336+
`with(this){return _c('input',{on:{"input":function($event){if(!('button' in $event)&&_k($event.keyCode,"delete",[8,46],$event.key,["Backspace","Delete","Del"]))return null;return onInput($event)}}})}`
337+
)
338+
// multiple keycodes (esc)
339+
assertCodegen(
340+
'<input @input.esc="onInput">',
341+
`with(this){return _c('input',{on:{"input":function($event){if(!('button' in $event)&&_k($event.keyCode,"esc",27,$event.key,["Esc","Escape"]))return null;return onInput($event)}}})}`
342+
)
343+
// multiple keycodes (space)
344+
assertCodegen(
345+
'<input @input.space="onInput">',
346+
`with(this){return _c('input',{on:{"input":function($event){if(!('button' in $event)&&_k($event.keyCode,"space",32,$event.key,[" ","Spacebar"]))return null;return onInput($event)}}})}`
337347
)
338348
// multiple keycodes (chained)
339349
assertCodegen(
340350
'<input @keydown.enter.delete="onInput">',
341-
`with(this){return _c('input',{on:{"keydown":function($event){if(!('button' in $event)&&_k($event.keyCode,"enter",13,$event.key,"Enter")&&_k($event.keyCode,"delete",[8,46],$event.key,["Backspace","Delete"]))return null;return onInput($event)}}})}`
351+
`with(this){return _c('input',{on:{"keydown":function($event){if(!('button' in $event)&&_k($event.keyCode,"enter",13,$event.key,"Enter")&&_k($event.keyCode,"delete",[8,46],$event.key,["Backspace","Delete","Del"]))return null;return onInput($event)}}})}`
342352
)
343353
// number keycode
344354
assertCodegen(

0 commit comments

Comments
 (0)