当另一个输入焦点时,contenteditable div 失去选择

2023-11-25

我对 contenteditable div 有疑问。当我想在其上执行一个简单的命令(如粗体或斜体)时,我执行以下操作:

  • 记住div(因为点击粗体按钮后它会失去焦点)
  • 单击按钮时,我重新聚焦 div 并执行粗体命令
  • 一切正常

现在,当我尝试做更困难的事情时,问题就出现了。例如,我想显示一个带有输入字段的自定义对话框:

  • 记住div
  • 单击按钮时,会显示一个对话框(一切仍然正常)
  • 用户将输入字段聚焦在该对话框上(这就是一切崩溃的地方)

这样做的问题是,一旦输入元素获得焦点,不仅我的 contenteditable div 失去焦点 - 它还会失去选择并在我重新聚焦它时将光标移动到开头。

所以我的问题是:在我关注另一个输入元素后,如何防止 contenteditable div 失去其选择?


如果 input 和 contenteditable 元素位于同一文档中,您将无法防止 contenteditable 元素中的选择被破坏。但是,您可以做的是在输入框获得焦点之前保存选择,并在对话框关闭后恢复选择。

这是一些简单的示例代码:

https://stackoverflow.com/a/3316483/96100

这是一个更完整的例子:

https://stackoverflow.com/a/4690057/96100

如果将 input 或 contenteditable 元素放置在单独的 iframe 中,大多数浏览器(尽管不是 IE)将保留原始选择。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当另一个输入焦点时,contenteditable div 失去选择 的相关文章

随机推荐

  • C# 委托中的元帅 va_list

    我正在尝试用 c 来完成这项工作 C 标头 typedef void LogFunc const char format va list args bool Init uint32 version LogFunc log C 实现 stat
  • Java 同步和性能的一个方面

    我刚刚意识到我需要在某个方面同步大量数据收集代码 但性能是一个真正值得关注的问题 如果性能下降太多 我的工具就会被淘汰 我将分别写入 int 和 long 以及各种数组 ArrayList 和 Map 应用程序将有多个线程进行函数调用 这些
  • 如何使用 SASS 进行媒体查询?

    我已经通读了 SASS 文档 只能找到如何使用 scss 语法而不是 sass 语法进行媒体查询 sass 是具有严格的空白 没有大括号或分号的语法 如何使用 sass 语法进行媒体查询 media screen and min heigh
  • pcl::RANSAC 分割,获取云中的所有平面?

    我有一个点云库函数 可以检测点云中最大的平面 这很好用 现在 我想扩展此功能以分割云中的每个平面并将这些点复制到新的云中 例如 房间地板上有球体的场景将返回地板和墙壁 但不是球体 因为它不是平面的 如何扩展下面的代码以获得所有飞机 而不仅仅
  • 内部版本号中的分支名称

    我试图将分支名称放入内部版本号中 但找不到正确的参数 我正在使用内部版本号格式 teamcity build branch 0 它可以工作 但是当它尝试构建默认分支 dev 时 teamcity 将其命名为
  • 如何在 osgi 中从字节反序列化对象

    在我的 osgi 应用程序中 我有三个包 travel api table api and utils travel api依赖于取决于table api这取决于utils 注意travel api不直接依赖于utils 我使用 aQute
  • x86 上哪个写屏障更好:lock+addl 或 xchgl?

    Linux 内核使用lock addl 0 0 esp 作为写屏障 而 RE2 库使用xchgl 0 0作为写屏障 有什么区别 哪个更好 x86 也需要读屏障指令吗 RE2 将其读屏障函数定义为 x86 上的无操作 而 Linux 将其定义
  • 是否可以使用 JavaScript 中的对象文字定义动态命名的属性? [复制]

    这个问题在这里已经有答案了 考虑以下 var a foo bar 相当于 var a a foo bar 相当于 var a a foo bar 相当于 var a var b foo a b bar 是否可以做类似的事情 var b fo
  • 在 Android 上将画布保存为位图

    我在将画布的内容放入位图中遇到一些困难 当我尝试执行此操作时 文件大小约为 5 80KB 但它似乎完全是空的 每个像素都是 000 画布上绘制了一系列由手写形成的相互连接的线条 下面是我的视图的 onDraw 我知道它阻塞了 UI 线程 不
  • JavaScript YAML 解析器 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我正在寻找一个 JavaScript YAML 解析器 它将 YAML 转换为 HTML 页面中可用的内容 我在 Github 上尝试过这个版本 h
  • 默认在 Sublime Text 3 中将程序编译为 c++ 14

    我知道我们可以使用 g 编译器将程序编译为 C 但g 编译器默认为98版本 要将其作为 C 14 运行 我们需要添加 std c 14在终端 Sublime Text 因其轻量级和功能而被认为是竞争性编程中有价值的编辑器 在这些比赛中 时间
  • 使用 Rails 4 将自定义字段/列添加到 Devise

    我正在尝试添加一个full name字段 列到我的用户模型 使用devisegem 和 Rails 4 网上大部分例子推荐使用 attr accessible 但听起来在 Rails 4 中应该以不同的方式处理这个问题 我该如何添加full
  • 分配二进制常量

    有没有办法将二进制值赋给 VB 变量 所有显而易见的选择都不起作用 我尝试过添加前缀 B 附加b但似乎没有任何作用 我寻找它的运气也不好 我不need这适用于我的应用程序 但我只是好奇 所以不需要替代解决方案 编辑 为了澄清起见 我正在寻找
  • 使用 colspan 设置 下 的宽度

    我想设置宽度td in tbody在下面thead具有colspan 2 具有硬定义的列宽 以 为单位 浏览器外壳不会动态调整表格宽度 sample width 100 table layout fixed sample td nth ch
  • java: wait()、notify() 和同步块

    我了解到调用对象的wait 方法将释放对象监视器 如果存在 但我有一些关于打电话的问题notify 另一个线程在此对象上 如果另一个 第三个 线程同时拥有对象监视器 何时 等待线程会醒来吗 如果第三个线程调用 等待线程会被唤醒吗wait 在
  • Ant 中出现“无法创建任务或输入 antlib:org.apache.maven.artifact.ant:mvn”错误

    运行 ant 任务时 Ant 构建无法运行build xml 我在控制台中收到以下错误 Buildfile F Eclipse Projects my project build xml typedef Could not load def
  • 在 Angular 中同步调用一个又一个的可观察对象

    我可以拨打以下服务电话 产品服务 GetAllProducts 产品服务 删除产品 产品服务 GetCategories 产品服务 DeleteCategory 在 sudo 代码中 我需要在组件中执行以下操作 使用productServi
  • 设置 UDP 套接字的源 IP

    我有一个绑定到 INADDR ANY 的 UDP 套接字 用于侦听我的服务器拥有的所有 IP 上的数据包 我通过同一个套接字发送回复 现在 当数据包发出时 服务器会自动选择哪个IP用作源IP 但我希望能够自己设置传出源IP 有没有办法做到这
  • Firebase Firestore REST 示例

    您好 我正在编写一个使用 firebase firestore 并将一些 json 写入 firestore 中的特定集合的脚本 我已经使用实时数据库完成了此操作 但 firestore 有点不同 下面是我的实时数据库片段 curl X P
  • 当另一个输入焦点时,contenteditable div 失去选择

    我对 contenteditable div 有疑问 当我想在其上执行一个简单的命令 如粗体或斜体 时 我执行以下操作 记住div 因为点击粗体按钮后它会失去焦点 单击按钮时 我重新聚焦 div 并执行粗体命令 一切正常 现在 当我尝试做更