重新调度键盘事件

2024-03-08

正在开发 Angular / TypeScript 应用程序,其中我们有一个自定义的基本文本编辑器。

尝试适当地处理用户突出显示的选择然后按下按键以替换该选择的情况。

为了解决这个问题,我们需要在插入其预期内容之前正确删除他们选择的“隐藏”组件。

我最初的想法是:

  1. 捕获KeyDown事件
  2. 检查是否选择了突出显示的范围
  3. 如果是,则删除所有选定的内容
  4. 重新调度 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(使用前将#替换为@)

重新调度键盘事件 的相关文章

  • TypeError: props.render 不是一个函数(React hook 形式)

    我将方法作为我用react hook form制作的形式的道具传递 当从react hook form添加控制器时 它给了我 TypeError props render不是一个函数 我在网上找不到任何解决方案 因此感谢任何帮助 impor
  • 在 Vue.js 中从父组件执行子方法

    目前 我有一个 Vue js 组件 其中包含其他组件的列表 我知道使用 vue 的常见方式是将数据传递给孩子 并从孩子向父母发出事件 但是 在这种情况下 我想在子组件中的按钮出现时执行子组件中的方法 parent被点击 哪种方法最好 一种建
  • 使用 jQuery/JS 打开时使
    标签的内容具有动画效果

    我只想要 HTML5 的内容details标记为 滑行 动画打开 而不是仅仅弹出打开 立即出现 这可以用 jQuery Javascript 实现吗 Fiddle http jsfiddle net 9h4Hq HTML
  • 检查 JavaScript 字符串是否为 URL

    JavaScript 有没有办法检查字符串是否是 URL 正则表达式被排除在外 因为 URL 很可能是这样写的stackoverflow 也就是说它可能没有 com www or http 如果你想检查一个字符串是否是有效的 HTTP UR
  • Google App Engine:修改云运行环境

    我正在尝试部署一个使用自定义 Node js 服务器的 Next js 应用程序 我想将自定义构建变量注入应用程序 next config js const NODE ENV process env NODE ENV const envTy
  • Node.js:如何在检索数据(块)时关闭响应/请求

    我正在用 node js 构建一个应用程序 它加载多个页面并分析内容 因为 node js 发送块 所以我可以分析这些块 如果一个块包含例如索引 nofollow 我想关闭该连接并继续其余部分 var host example com to
  • 从未用 @flow 标记的导入文件中获取类型定义

    TL DR我怎么告诉flow从未声明的导入模块导入类型定义 flow 加长版 流接缝能够从不使用流语法的文件中派生类型 请参阅示例 示例文件 flow js if Math random lt 0 5 var y hello else va
  • 标签获取 href 值

    我有以下 html div class threeimages a img alt Australia src Images Services 20button tcm7 9688 gif a div class text h2 a hre
  • 音频 blob 的 URL.createObjectURL 在 Firefox 中给出 TypeError

    我正在尝试从创建的音频 blob 创建对象 URLgetUserMedia 该代码在 Chrome 中可以运行 但在 Firefox 中存在问题 错误 当我打电话时stopAudioRecorder 它停在audio player src
  • Meteor - 从客户端取消服务器方法

    我正在通过服务器方法执行数据库计数 用户可以选择他们希望如何执行计数 然后调用该方法 我的问题是 计数可能需要一些时间 并且用户可能会在方法运行时改变主意并请求不同的计数 有什么方法可以取消调用的方法并运行新的计数吗 我认为 this un
  • 如何在使用页面锚点导航时设置“激活”类以在 Angular 2 中引导导航栏?

    我正在使用 Angular 2 和 Bootstrap 4 创建一个单页网站 我创建了一个始终位于页面顶部的导航栏组件 并且我正在使用页面锚点导航 id 请注意 我还没有创建路由模块 到目前为止还没有必要这样做 导航栏代码如下
  • 如何使输入字段和提交按钮变灰

    我想变灰这两件事 http doorsplit heroku com 歌曲输入字段和提交按钮 直到用户输入艺术家 有没有一种简单的方法可以通过 JQuery 来做到这一点 艺术家输入字段的id是 request artist 你可以这样做
  • Typescript导入别名+桶文件

    我最近花了很多时间 因为 Angular ngrx typescript 生态系统中某些事物的特定行为 并且我无法识别可能的根本原因 场景 我已经构建了一些效果 并将它们导出到桶文件中 index ts import MyEffects f
  • Javascript 数组到 VBScript

    我有一个使用 Javascript 构建的对象数组 我需要使用 VBScript 读取它 如下例所示 我找不到在 VbScript 代码中循环遍历数组的方法myArray object 这个例子是我的问题的简化 我无法更改页面的默认语言 这
  • Laravel 中只向登录用户显示按钮

    如果我以 John 身份登录 如何才能只显示 John 的红色按钮而不显示 Susan 的红色按钮 测试系统环境 Win10 Laravel5 4 Mysql5 7 19 table class table table responsive
  • Javascript 纪元时间(以天为单位)

    我需要以天为单位的纪元时间 迄今为止 我已经看到过有关如何翻译它的帖子 但几天后就没有了 我对纪元时间很不好 我怎么能得到这个 我需要以天为单位的纪元时间 我将解释为您想要自纪元以来的天数 纪元本身是第 0 天 或第 1 天的开始 无论您如
  • 如何更改此 jquery 插件的时区/时间戳?

    我正在使用这个名为 timeago 的插件 在这里找到 timeago yarp com 它工作得很好 只是它在似乎不同的时区运行 我住在美国东部 费城时区 当我将准确的 EST 时间放入 timeago 插件时 比如 2011 05 28
  • 为什么 jquery 没有检测到单选按钮未被选中的情况? [复制]

    这个问题在这里已经有答案了 可能的重复 JQuery radioButton change 在取消选择期间不会触发 https stackoverflow com questions 5176803 jquery radiobutton c
  • Angular 6 + RxJS 6.0:如何将新元素推送到 Observable 包含的数组

    我从 firebase 服务器分块接收数据 同时渲染该数据需要一个坚持可观察包含数组的库 我不知何故无法将新的数据块推送到可观察到的现有数据块数组 从数据服务中 我通过主题的下一个调用并尝试添加新的 calEvent this homeWo
  • 如何从图像输入中获取 xy 坐标?

    我有一个输入设置为图像类型

随机推荐

  • 如何强制NetStream创建关键帧?

    我创建了一个视频流录制应用程序 除了录制的 FLV 有点损坏之外 该应用程序运行良好 如果我在 VLC 播放器中打开 FLV 一切都是绿色的 但当发生更改时会变得 干净 尤其是在视频的开头是分手 我用的是Red5 1 0 对于预先录制的流
  • RDS实例CPU利用率

    我的 amazon mysql 大型 RDS 实例的 CPU 利用率非常高 大约 70 没有任何真正的原因 如何找到哪个查询或进程正在损害我的实例 thanks 标准方法是检查SHOW PROCESSLIST or SHOW ENGINE
  • Google Drive API,上传文件 [Python]

    我使用 API 将备份从服务器上传到我的谷歌驱动器 授权顺利通过 文件已上传 但文件未出现在列表中 代码 import httplib2 import pprint from apiclient discovery import build
  • AttributeError:“识别器”对象没有属性“识别”

    我正在尝试 Python 中的语音识别模块 版本 3 5 并收到以下错误 AttributeError 识别器 对象没有属性 识别 这是我使用的代码 import pyaudio import speech recognition as s
  • 使用 RMySQL 的 UTF8 编码

    我正在尝试从 mysql 数据库查询数据 当然 其中包含一些字符串 对于连接和数据检索 我在 R 中使用 RMySQL 效果很好 除了一件事 我正在检索的字符串似乎不是 utf8 格式的 但我需要这个 因为这些字符串中有一些德语 Umlau
  • Python:检查两个列表之间字符串的部分匹配

    我有两个列表 如下所示 c John query 989877 forcast Tamm isl My name is Anne Query 989877 John Tamm Ju 我想检查其中的每一项isl中的每一项c这样我就可以得到所有
  • Android 上的 RTSP 客户端实现

    我看到很多与此相关的问题 尽管如此 我认为我的答案还没有 我想在 Android 上使用已编码的 RTSP 客户端与 MediaCodec 一起使用 以便捕获 H264 中的 RTSP 流 然后解码并显示它 我使用了 VideoView 和
  • 在仅限 iPhone 的应用程序中播放 YouTube 视频 - 失去控制

    下面的代码用于在视图上放置一个小的 WebView 以便用户可以点击它 视频会以全屏模式打开并播放 所有这些都有效 但游戏 4 秒后控件就会消失并且不会重新出现 点击 旋转 视频结束后 控件会重新出现 并且 完成 按钮变为可用 然而 一旦
  • 将 CallByName 与表单字段的“事件接收器”结合使用

    我的应用程序中的几个表单上都有文本框 这些文本框具有 缩放 功能 双击它们 会出现一个弹出表单 您可以根据自己的喜好调整大小和编辑内容 这是通过类模块 appZoomText 进行编码的 该模块充当文本框事件的 事件接收器 我正在尝试创建一
  • 想要创建一个 Dictionary 类型的自定义类

    我想创建一个基本上包装字典的自定义类 我想向其添加一个名为 Name 的属性 I tried public class MyDictionary
  • Chrome 声称简单函数未定义

    我在空闲时间制作了一个莫尔斯电码翻译器 并且第一次在 Chrome 中尝试了它 当 的时候translate 函数被调用 Chrome 抛出异常Uncaught TypeError translate is not a function a
  • 如何将“$modalInstance”注入控制器?

    在我的应用程序中 当我发现用户未登录后 我想打开一个模式对话框 when showtask id templateUrl Home Template showtask resolve ShowTaskCtrl resolve access
  • 为什么在 Python 中隐式检查是否为空? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 块的逆是什么:以 rebol / red 加载文本

    假设我有一些 rebol red 代码 如果我加载源文本 我会得到一个块 但是如何从块中取回源文本 我尝试了表单块 但它没有返回源文本 text Red Title Red Pretty Printer out none output te
  • Javascript 中的会话值

    如何在 JavaScript 中读取和写入会话值 如果您谈到服务器端会话值 除了以某种方式与服务器通信之外没有其他方法 例如 使用异步回调 您可以使用某种方法读取 写入它们 对于客户端会话变量的模拟 您可能想看看here http www
  • 无法通过代理推送到github

    请帮忙 我正在尝试从我的工作场所推送到 github 我试过这个 myuser somewhere c sites mrquery master git remote add origin ssh email protected cdn c
  • 创建 React 应用程序已部署,但 github 页面显示来自 manifest.json 的 404

    谁能帮我找出清单 json 文件的问题 我将一个简单的入门 create react 应用程序部署到 github 页面 并通过命令行显示该应用程序已发布 但当我转到 github 页面时页面未加载 当我查看控制台时 我收到来自 manif
  • 单例类方法的并发调用

    我有一个单例类 public class Singleton private static Singleton istance null private Singleton public synchronized static Single
  • 推荐一个用 C# 读取 Excel 文件的教程 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有 C 经验 但使用 C 读取 Excel 内容的经验有限 我的任务非常简单 只需读取 Excel 文档的每一行的每一列并检索它们的值
  • 重新调度键盘事件

    正在开发 Angular TypeScript 应用程序 其中我们有一个自定义的基本文本编辑器 尝试适当地处理用户突出显示的选择然后按下按键以替换该选择的情况 为了解决这个问题 我们需要在插入其预期内容之前正确删除他们选择的 隐藏 组件 我