正在开发 Angular / TypeScript 应用程序,其中我们有一个自定义的基本文本编辑器。
尝试适当地处理用户突出显示的选择然后按下按键以替换该选择的情况。
为了解决这个问题,我们需要在插入其预期内容之前正确删除他们选择的“隐藏”组件。
我最初的想法是:
- 捕获KeyDown事件
- 检查是否选择了突出显示的范围
- 如果是,则删除所有选定的内容
- 重新调度 KeyDown 事件,以便插入适当的内容
这是我们的删节版本onKeyDown
method:
cloneKeyboardEvent(eventToClone): KeyboardEvent {
return new KeyboardEvent(eventToClone.type, {
key: eventToClone.key,
code: eventToClone.code,
location: eventToClone.location,
ctrlKey: eventToClone.ctrlKey,
shiftKey: eventToClone.shiftKey,
altKey: eventToClone.altKey,
metaKey: eventToClone.metaKey,
repeat: eventToClone.repeat
});
}
onKeyDown($event: KeyboardEvent) {
// Check if there's a selection
if (this.isSelectionRange) {
Helpers.stopEvent($event);
// Delete components in selection
this.deleteComponentsInSelection($event);
const clonedEvent = this.cloneKeyboardEvent($event);
document.dispatchEvent(clonedEvent);
return true;
}
}
一切正常到#4。
The clonedEvent
与原始事件匹配,但不会触发。我已经插入了一个debugger
开始时onKeyDown()
并且它只被击中一次,在初始击键时,而不是在dispatchEvent()
.
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)