execCommand insertHTML 中断存储的 window.getSelection()

2024-01-27

当使用在页面中选择文本和恢复所选文本的方法时,我发现运行execCommand('insertHTML...in Between 会导致存储的选择中断。

这是如何选择和恢复文本的示例。

// Get Selection
 var sel = window.getSelection().getRangeAt(0);
 // Clear Selections 
 window.getSelection().removeAllRanges();
 // Restore Selection 
 window.getSelection().addRange(sel)

这工作正常,但是一旦你运行execCommand('insertHTML..选择endOffset将自身设置为与选择相同的值startOffset

是否有一个原因?更重要的是有没有办法解决这个问题?


可以在此处查看该错误的完整示例,以及一些基本的控制台日志记录。http://jsfiddle.net/blowsie/Y8pJ7/ http://jsfiddle.net/blowsie/Y8pJ7/

这个小提琴的目标是选择文本,将其转换为大写,然后重新选择文本。


如何最好地保存和恢复选择实际上取决于您正在做什么。对于您的具体示例,现有文本只是进行大小写转换,我建议采用基于字符索引的方法,例如https://stackoverflow.com/a/5596688/96100 https://stackoverflow.com/a/5596688/96100(虽然这个答案需要 Rangy,但可以简单地更改为不需要它:http://jsfiddle.net/Y8pJ7/8 http://jsfiddle.net/Y8pJ7/8).

对于其他一些情况,更好的方法是在选择的开始和结束处使用不可见的标记元素,这是选择保存/恢复模块 http://code.google.com/p/rangy/wiki/SelectionSaveRestoreModule of Rangy http://code.google.com/p/rangy/(披露:我是兰吉的作者)。

2012 年 6 月 18 日更新

Rangy 现在可以通过新的基于字符偏移的选项和范围进行保存和恢复文本范围模块 http://code.google.com/p/rangy/wiki/TextRangeModule (demo http://rangy.googlecode.com/svn/trunk/demos/textrange.html).

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

execCommand insertHTML 中断存储的 window.getSelection() 的相关文章

  • 推送到生产服务器时 ASP.NET MVC 错误 500

    我正在 C 项目中开发 ASP NET MVC 4 该项目在我的本地开发服务器上运行良好 但是 当我将其推送到生产服务器时 特定页面会出现 500 内部服务器错误 但是 我收到的错误并不比 处理您的请求时发生错误 更有帮助 如何强制 ASP
  • 如何在 PHP 中使用正则表达式解析 Apache 日志

    我正在尝试在 PHP 中分割这个字符串 11 11 11 11 25 Jan 2000 14 00 01 0100 GET 1986 js HTTP 1 1 200 932 http domain com index html Mozill
  • Xml - 使用Python按标签查找元素[重复]

    这个问题在这里已经有答案了 我正在尝试从一堆 xml 文件中提取一些数据 现在的问题是所有文件的结构并不完全相同 因此 仅迭代子文件并提取值是很困难的 有没有getElementByTag python 处理此类 xml 文档的方法 我发现

随机推荐

  • MATLAB 中的统计异常值检测

    假设我们有这个矩阵 main 10000 5 3 1 5 5677 0 134 1 1 456 3 该方法是计量经济学和统计问题中使用最广泛的方法 X是我们正在寻找异常值的数据 X mean X gt n std X 因此 如果这个不等式成
  • 仅在启动时无法找到运行时版本?

    我有一个非常简单的控制台应用程序 只是一个Console Write 来测试一些启动功能 我将其放在 Window 7 的启动文件夹中 但当它运行时 我收到 无法找到运行此应用程序的运行时版本 奇怪的是 如果我进入启动文件夹并实际运行该程序
  • 如何在keras批量更新期间缩放梯度?

    我正在使用标准 keras 模型 并且正在批量训练 使用train on batch功能 现在 我想获取批次中每个元素的梯度并对其进行缩放 将每个样本梯度与我拥有的样本特定值相乘 并且在缩放每个梯度后 可以将其求和并用于更新现有权重 无论如
  • HTML 输入 type="password" 的 Windows 批处理等效项是什么?

    我需要在 Windows 脚本中从用户那里获取身份验证凭据 但采用经典的 第一个 Google 结果 方法 SET P USR Username SET P PWD Password 不太令人满意 所以我想知道是否有一个 等价物 HTML
  • 帮我解决我的 JavaScript 测验 [已关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我已经参加这个测验很多年了 只是无法
  • 从 std::vector 中连续擦除的安全方法?

    我认为下面的代码可以工作 但是当目标小部件位于向量末尾时它会崩溃 for std vector
  • 试图推迟我的部分计划

    我试图拍摄我打开的网页的快照 但我需要延迟代码的第二部分 以便程序有时间打开页面 这是代码 import os import sys import time import Image import ImageGrab import webb
  • MSBuild - 它可以计算出解决方案文件中的项目依赖关系吗?如果是这样怎么办?

    我有一个 msbuild 项目 它从 Visual Studio 构建一个 SLN 文件 其中包含所有项目 大约 70 多个项目 并且许多项目相互依赖 这意味着它们需要按顺序构建 有时开发人员会忘记在解决方案文件中的 Visual Stud
  • javascript 中函数声明后的冒号[重复]

    这个问题在这里已经有答案了 我正在查看 Vue js 的源代码 在几乎所有的函数声明中 我找到了一种定义函数的新方法 function isStringStart chr number boolean return chr 0x22 chr
  • 如何在leiningen项目中打包资源

    在示例项目中 https github com technomancy leiningen blob master sample project clj https github com technomancy leiningen blob
  • Anaconda提示加载错误:输入行太长

    我在 Windows 7 64 位版本上安装了 Anaconda 64 python 2 7 安装后 anaconda提示符可以正常启动 但是每当我重新启动 关闭并重新启动笔记本电脑时 anaconda提示符都会显示以下错误消息 并且某些p
  • 自动镜像 GitHub 存储库

    我怀疑这个问题以前曾被问过 尽管我能找到的都是相似但不同的问题 或者是相同的问题 但只有不适合我的解决方案 GitHub 上有一个我无法控制但想要镜像的存储库 对于镜像 我的意思是拥有一个自动更新的克隆 我希望这个镜像也能出现在 GitHu
  • 当使用 PHP 选择值“other”时,如何显示 HTML 输入字段

    我想弄清楚的是如何拥有一个 htmlinput当值为other从下拉菜单中选择 现在 下拉列表的值来自 MySQL DB 查询的结果 该查询有效 但我似乎无法弄清楚当我选择其他选项时如何显示输入 query mysql query SELE
  • Visual Studio 2015 + Xamarin + 本机便携式 PCL + WCF

    因此 我们的企业正在使用 Visual Studio 走 Xamarin 路线 浏览所有在线文档表明 从 Web 服务创建 WCF 代理客户端并将其放置在 PCL 中应该很简单 经过一番努力并试图找出为什么我无法使用 SLSVcUtil e
  • JavaScript使用变量的基本功能

    我目前正在 Codecademy 上学习 JavaScript 在那里 它给出了一个基本变量的示例 var divideByThree function number var val number 3 console log val 然而
  • C# 使用反射时确定 Nullable 属性 DateTime 类型

    我有一个关于如何确定对象的 Nullable 属性类型的问题 ObjectA有财产DateTime CreateDate 当我像下面的代码一样迭代它的属性时 如何检查属性是否是Nullable DateTime type foreach P
  • 在 PowerShell v3 中运行并行 Invoke-WebRequest 作业

    在 PowerShell 中运行同步后台作业非常简单 但我似乎无法让它与新的 v3 中 cmdlet Invoke WebRequest 一起使用 我正在通过 PowerShell 以脚本方式下载数千个文件 效果很好 但串联起来需要几天时间
  • 将计算列转换为常规列

    我在 SQL Server 2005 的一个大表中有一个持久计算列 我想将其转换为常规列 保留当前值 我是否必须重新创建列并更新事务中的整个表 或者是否可以仅更改计算列规范 以及如何操作 Create a new Column unpers
  • SCons 不会清除所有文件

    我有一个包含 builds 目录的文件系统 每个目录都包含一个名为 build info xml 的文件 然而 一些构建发生在构建脚本生成 build info xml 之前 因此在这种情况下 我有一个有点不平凡的 SCons SConst
  • execCommand insertHTML 中断存储的 window.getSelection()

    当使用在页面中选择文本和恢复所选文本的方法时 我发现运行execCommand insertHTML in Between 会导致存储的选择中断 这是如何选择和恢复文本的示例 Get Selection var sel window get