范围和插入符位置不匹配

2024-04-21

我在 MS Edge 中注意到这个问题,插入符号位置和范围在可编辑内容内不匹配或错误。

$("#c").click(function(e) {
  var sel = window.getSelection();
  var range = sel.getRangeAt(0);
 
  $("#res").get(0).textContent = "START_OFFSET:" + range.startOffset + "->" + range.startContainer.innerHTML;
  console.log("Range count: " + sel.rangeCount);
});
<html>

<head>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
</head>

<body>
  <div id="c" contenteditable="true">
    <span>TEST</span>
  </div>
  <span id="res"></span>
</body>

</html>

如果打开 MS Edge 很麻烦,请看以下代码片段:

结果应该是 4 -> TEST

奇怪的是,实际的插入符号指向包含 TEST 的innerHTML 的 span 节点,但起始偏移量和结束偏移量显示为 1。通过范围数据,它是这样的|TEST但视觉上它是TEST|.

有办法解决这个问题吗?

通过JS,我似乎无法捕获范围类内的正确信息来正确调整startOffset和endOffset,除非我检测到点击位置附近最近的字母并在那里插入插入符号,但我认为这很乏味。

I found this https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/3296786/。关于解决方案有后续吗?谢谢。

Update

The span元素干扰范围。

$("#c").click(function(e) {
  var sel = window.getSelection();
  var range = sel.getRangeAt(0);
 
  $("#res").get(0).textContent = "START_OFFSET:" + range.startOffset + "-> " + range.startContainer.innerHTML;
 console.log(range.startContainer);
});
<html>

<head>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
</head>

<body>
  <div id="c" contenteditable="true">
    TEST
  </div>
  <span id="res"></span>
</body>

</html>

我已经缩小了问题范围<span>是万恶之源。

The spans 文本包含在文本元素内,您正在其中导航 ([Object Text], 检查startContainer财产)。在最后一个字符之后,文本元素结束,span然而没有。因此,您现在位于文本元素(索引 0)之后,并且位于文本元素中的第一个索引处。span。其他主要浏览器没有这个问题,因为文本元素在最后一个字符之后继续。这很可能是 Edge 错误。

去除span来解决问题。

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

范围和插入符位置不匹配 的相关文章

  • 使用 Node.js 构建网站的最佳实践

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 我想知道如何使用 Node js 从头开始 开发一个网站 我明白我怎么能possibly
  • 如何使用有角度的材料创建卡片网格?

    我正在尝试使用 ng repeat 创建每行三张卡片的网格 我有一个普通的 javascript 对象数组附加到范围 下面的代码将为每张卡创建一个新行 div div
  • 滚动时的 CSS 背景模糊

    我有固定的背景图像 滚动时我希望图像变得模糊 我知道如何在 css 中进行模糊 但在特定的滚动位置进行 这是一个例子 https medium com good music f160ba9e6c52 https medium com goo
  • Number.IsNaN() 比 isNaN() 更糟糕吗

    Soooooo isNaNJavaScript 显然被破坏了 比如 isNaN isNaN isNaN true isNaN false isNaN 0 返回 false 当它们看起来都是 不是数字 在 ECMAScript 6 中 草案包
  • 转义 h 轮廓

    因此 我一直在尝试找出在被较低级别的标题吸引后添加内容的最佳方法是什么 section h1 Title of Section h1 h2 Related 1 h2 h2 Related 2 h2 p I NEED THIS TO BE P
  • 本地推送通知到在应用程序内运行 JS 代码的 Win8 Live Tile

    我正在尝试将更新发送到我的应用程序的磁贴 当应用程序运行时 这可以正常工作 例如 当用户单击按钮时 我可以轻松地将磁贴更新通知发送到磁贴 我无法解决的是当应用程序无法运行时如何更新磁贴 我找到的唯一选择是使用以下命令从远程 Web 服务器拉
  • 如何使用 Scrapy 从网站获取所有纯文本?

    我希望在 HTML 呈现后 可以从网站上看到所有文本 我正在使用 Scrapy 框架使用 Python 工作 和xpath body text 我能够获取它 但是带有 HTML 标签 而且我只想要文本 有什么解决办法吗 最简单的选择是ext
  • onclick 事件中未调用函数

    我想在每个 YouTube 链接的末尾添加一些 HTML 以在 litebox 中打开播放器 到目前为止 这是我的代码 document ready function var valid url new RegExp youtube com
  • 将 Firebase 云消息传递与 Windows 应用程序结合使用

    我在 Android 和 iOS 应用程序中使用 Firebase Cloud Messaging 但是我还有此应用程序的 Windows Mac OS 版本 我想保留相同的逻辑 我知道 Firebase Cloud Messaging 可
  • 为什么我的交互式图像仅在 Internet Explorer 上出现故障?

    我的问题 我为自己制作了一个图像地图 交互式图像 它在 Chrome safari 和 Firefox 上完美运行 然而 当我在可怕的互联网浏览器上尝试它时 它真的很糟糕 这些小点应该扩展到更大的盒子中 在互联网浏览器上它要么不起作用 要么
  • 如何计算特定字符在字符串中出现的次数

    我正在尝试创建一个函数来查看数组中的任何字符是否在字符串中 如果是 有多少个 我尝试计算每一种模式 但是太多了 我尝试使用 Python 中的 in 运算符的替代方案 但效果不佳 function calc fit element var
  • JavaScript eval("{}") 返回行为?

    根据ECMA 262 规范 http www ecma international org publications files ECMA ST Ecma 262 pdf 以下语句返回1 eval 1 eval 1 eval 1 var a
  • 使用 Javascript 设置 cookie [重复]

    这个问题在这里已经有答案了 我正在尝试构建我的第一个移动应用程序 它需要连接到我的 mysql 数据库并使用 json 返回数据 这很好 目前我有一个登录系统 一旦确定用户名和密码存在 它就会返回一条成功消息 对于下一步 我想在我的页面上使
  • 使用 CSS 折叠和展开元素

    我正在尝试构建一个页面 加载时仅可见标题 并且 当用户单击标题时 每个标题下方的表格会在隐藏和显示状态之间切换 我的限制是只能在 CSS 中执行此操作 这是我到目前为止想到的 https jsfiddle net Argoron c1ypx
  • $resource.query 返回分割字符串(字符数组)而不是字符串

    我正在使用像下面这样的 Angular resource angular module app factory data function resource var Con resource api data update method P
  • 从 PHP 数组生成 HTML 表

    我不明白这一点 我需要解决看似简单的问题 但这超出了我的逻辑 我需要编写一个函数 table columns input cols 它将输出一个表 示例 input array apple orange monkey potato chee
  • 有没有办法使用 ko.observableArray 作为地图?

    有没有办法使用ko observableArray http knockoutjs com documentation observableArrays html像地图 字典一样 例如 var arr ko observableArray
  • 什么是 WKWebView 中的 WKErrorDomain 错误 4

    fatal error LPWebView encounters an error Error Domain WKErrorDomain Code 4 A JavaScript exception occurred UserInfo 0x7
  • 如何从 json 文件创建模型? (ExtJS)

    这是我想使用 json 文件创建的模型 Ext define Users extend Ext data Model fields name user id type int name user name type string 为了根据服
  • 禁用允许文本选择的

    残疾人可以吗

随机推荐

  • 使用powershell刷新网页

    我只需要使用powershell刷新当前网页 但是所有打开的网页都在刷新 我的代码在这里 function Refresh WebPages param interval 5 Refreshing IE Windows every inte
  • 如何获取指向引用成员的指针?

    考虑这段代码 struct AA int rr 有没有办法获取指向的指针 或引用 AA rr为了获得这个 AA aa auto mm AA rr error cannot create pointer to reference member
  • CMake:如何在多个文件上运行自定义命令来生成源文件?

    我有以下情况 我想编译一些Scheme文件Gambit https github com gambit gambit成可执行文件 为此 我使用 gambit 将所有计划文件翻译 生成为 C 和目标文件 然后将其编译并链接为可执行文件 假设我
  • 数据库关系 1:1 vs 1:0..1

    我正在努力了解这些关系 正如我下面所示 它是否正确 1 我会有一个1 0 1通过简单地使父级的身份密钥也是子级的身份密钥来建立关系 2 为了做到这一点1 1 我在父表中添加一个FK 连接两个Identity列 这就是全部内容了吗 如果我的措
  • 在 Numpy 中预处理 Tensorflow 张量

    我在 Tensorflow 中设置了一个 CNN 用 TFRecordReader 读取数据 它工作得很好 但我想做一些比提供的更多的预处理和数据增强tf image功能 我特别想做一些随机缩放 是否可以在 Numpy 中处理 Tensor
  • 无法定义静态抽象字符串属性

    我遇到了一个有趣的问题 正在寻找一些关于如何最好地处理这个问题的建议 我有一个抽象类 其中包含一个静态方法 该方法接受我想定义为抽象属性的静态字符串 问题是 C 不支持以下内容 请参阅配置部分名称 and Current特性 public
  • 如何使用WebView中的id填充HTML输入中的值

    我的里面有 HTML 页面WebView有输入 输入有id 姓名 如何用一些字符串填充活动的输入 您可以尝试以下操作 mWebView loadUrl javascript document forms myform id value ne
  • 神经网络中“特征”的定义是什么?

    我是神经网络的初学者 我对这个词很困惑feature 你能给我一个定义吗feature 这些特征是隐藏层中的神经元吗 这些特征是输入向量的元素 特征的数量等于网络输入层的节点数量 如果您使用神经网络根据物理属性的测量将动物分类为猫或狗 那么
  • 构建失败 - TFS2008 上的 VS2010 解决方案

    我已将 VS2008 ASP NET MVC 解决方案迁移到 VS2010 MVC2 NET 4 0 该解决方案在本地构建 并且所有单元测试都通过 我们的 TFS 服务器仍然是 TFS2008 我在通过 CI 构建时遇到问题 项目全部构建成
  • 如何检测何时使用history.pushState和history.replaceState? [复制]

    这个问题在这里已经有答案了 当历史状态修改时 我可以订阅一些事件吗 如何 我曾经用它来通知何时pushState and replaceState叫做 Add this var wr function type var orig histo
  • 我可以删除[]一个指向已分配数组但不指向其开头的指针吗?

    我特别想知道以下情况 我在一些我必须使用的代码中发现的 SomeClass ar new SomeClass 2 ar delete ar 这段代码似乎工作正常 即没有崩溃 win32 用 VS2005 构建 这 合法 吗 感觉肯定不对 不
  • Windows 窗体应用程序的退出代码

    如何从 Windows 窗体应用程序返回非零退出代码 Application Exit 是退出应用程序的首选方法 但没有退出代码参数 我知道Environment Exit 但这不是关闭应用程序循环的好方法 Application Exit
  • 如果 Spring 应用程序无法连接到其配置服务器,则会快速失败

    假设您有一个 Spring 应用程序 它从配置服务器获取其配置 如果无法连接到配置服务器 应用程序将继续启动 但由于所有配置都丢失 它最终将失败并出现潜在的误导性错误 是否可以配置 Spring 使其在启动期间无法连接到其配置服务器时立即中
  • 将用户输入的字符串转换为正则表达式

    我正在用 HTML 和 JavaScript 设计一个正则表达式测试器 用户将输入正则表达式 字符串 并通过单选按钮选择他们想要测试的函数 例如搜索 匹配 替换等 程序将在使用指定参数运行该函数时显示结果 当然 会有额外的文本框用于替换额外
  • 为什么我的 UITableView 从 UITableViewStyleGrouped 更改为 UITableViewStylePlain

    我的应用程序有一个扩展的视图控制器UITableViewController 初始化方法如下所示 id initWithCoder NSCoder coder if self super initWithCoder coder self t
  • MySQL 用通配符替换

    我正在尝试编写 SQL 更新以用新字符串替换特定的 xml 节点 UPDATE table SET Configuration REPLACE Configuration
  • 如果 editable false,fullCalendar eventClick 处理程序将不起作用

    jQuery fullCalendar 插件似乎有问题可编辑模式 http arshaw com fullcalendar docs event ui editable 在某些情况下 如果事件点击处理程序 http arshaw com f
  • 从 android 中的 firebase 发送通知时没有通知声音

    我正在从 firebase 向我的 Android 应用程序发送推送通知 但是当我的应用程序处于后台时 不会调用 firebase onMessageReceived 方法 而是 firebase 向系统发送通知以在系统托盘中显示通知 通知
  • 无法通过 exec() 语句更改函数中的全局变量?

    为什么我不能使用 exec 从函数内部更改全局变量 当赋值语句位于 exec 之外时 它可以正常工作 这是我的问题的一个例子 gt gt gt myvar test gt gt gt def myfunc global myvar exec
  • 范围和插入符位置不匹配

    我在 MS Edge 中注意到这个问题 插入符号位置和范围在可编辑内容内不匹配或错误 c click function e var sel window getSelection var range sel getRangeAt 0 res