获取 contenteditable div 中的插入符索引(包括标签)

2023-11-25

我有一个contentEditable div其中我有多个标签(br, b, u, i)和文本。

我需要获取相对于 div 的插入符索引位置,包括所有标签。

例如:

<div id="h" contenteditable="true">abc<b>def<br>ghi</b>jkl</div>

如果光标位于g and h,我需要插入符号索引位置为14。 问题是发现的方法使用treeWalker在这种情况下不起作用。 未找到粗体标记...可能是因为它未关闭。 我也尝试了几种方法但仍然没有运气。

我需要它来工作Firefox。 谢谢。


你试过这个吗?获取范围相对于其父容器的开始和结束偏移量

直接链接到jsfiddle:https://jsfiddle.net/TjXEG/1/

功能代码:

function getCaretCharacterOffsetWithin(element) {
    var caretOffset = 0;
    if (typeof window.getSelection != "undefined") {
        var range = window.getSelection().getRangeAt(0);
        var preCaretRange = range.cloneRange();
        preCaretRange.selectNodeContents(element);
        preCaretRange.setEnd(range.endContainer, range.endOffset);
        caretOffset = preCaretRange.toString().length;
    } else if (typeof document.selection != "undefined" && document.selection.type != "Control") {
        var textRange = document.selection.createRange();
        var preCaretTextRange = document.body.createTextRange();
        preCaretTextRange.moveToElementText(element);
        preCaretTextRange.setEndPoint("EndToEnd", textRange);
        caretOffset = preCaretTextRange.text.length;
    }
    return caretOffset;
}

function showCaretPos() {
    var el = document.getElementById("test");
    var caretPosEl = document.getElementById("caretPos");
    caretPosEl.innerHTML = "Caret position: " + getCaretCharacterOffsetWithin(el);
}

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

获取 contenteditable div 中的插入符索引(包括标签) 的相关文章

  • 动画进度元素值

    我有一个progress元素 该元素如下所示 div class container div div div
  • 如何使用canvas.toDataURL()将画布保存为图像?

    我目前正在构建一个 HTML5 Web 应用程序 Phonegap 本机应用程序 我似乎不知道如何将画布保存为图像canvas toDataURL 有人可以帮我吗 这是代码 有什么问题吗 我的画布被命名为 canvasSignature J
  • Ember.js 处理 View 事件后转换到路由

    Setup 我有一个 Ember 应用程序 支持使用 Imgur API 上传图像 我已经有一个工作路线和模板来处理任何 Imgur ID 但我想在上传新图像后转换到此路线 使用返回的 Imgur ID 这是该应用程序的相关部分 http
  • 按百分比设置 bootstrap 模态身高

    我正在尝试制作一个带有主体的模态 当内容变得太大时 该主体会滚动 但是 我希望模式能够响应屏幕尺寸 当我将最大高度设置为 40 时 它没有任何效果 但是 如果我将最大高度设置为 400px 它会按预期工作 但不会响应 我确信我只是错过了一些
  • 如何更改 Bootstrap 3 div 列顺序

    正在做我的第一个响应式设计 在 Bootstrap 3 中可能会出现类似的情况 在 lg 上更改此设置 a b c sm 上的这个 a c b 您可以使用两个 div 一个用于第一类型的布置 另一个用于第二类型的布置 第一个仅在 lg 中显
  • HTML2canvas 和 Canvas2image,下载的屏幕截图不显示我的 HTML 图像

    我一直在开发一个 HTML 页面 我想将其转换为图像 我一直在使用 html2canvas 和 canvas2image 脚本并采用此代码http jsfiddle net 8ypxW 3 http jsfiddle net 8ypxW 3
  • iOS7 中“-webkit-overflow-scrolling: touch” 最初的屏幕外元素被破坏

    既然转基因种子已经发布了 我们现在可以谈谈了 看起来 iOS7 中的 webkit overflow scrolling touch 已损坏 最初不在屏幕上的元素的触摸事件不会触发 或者在某些情况下只是不可靠 这是一个例子
  • JavaScript 中数组的 HTML 数据列表值

    我有一个简单的程序 它必须从服务器上的文本文件中获取值 然后将数据列表填充为输入文本字段中的选择 为此 我想要采取的第一步是我想知道如何动态地将 JavaScript 数组用作数据列表选项 我的代码是
  • 如果链接包含特定文本,jQuery 将类添加到 href

    我的网站上的列表中有一些动态填充的链接 这些链接链接到文件 是否可以使用 jQuery 查看文件名是否以 pdf 结尾 并在 href 或类似的链接文本以 mp3 结尾时添加一个类 例如 我的列表中有以下链接 文件1 pdf 歌曲1 mp3
  • 在d3.js中将2D形状转换为3D,并根据ANGULAR中的值调整高度

    我正在使用 d3 js v6 创建以下 2D 图表表示的 3D 图表 这个圆圈中有多个正方形 每个正方形都根据值分配了一种颜色 值越大 正方形越暗 现在我想将其转换为 3D 形状 其中当值变高时 只有特定正方形的高度会增加 因此结果在某种程
  • 使用 JS 合并具有相同值的相邻 HTML 表格单元格

    我已经为此苦苦挣扎了一段时间 我有一个根据一些 JSON 数据自动生成的表 该数据可能会有所不同 我想合并第一列中具有相同值的相邻单元格 例如此表中的 鱼 和 鸟 table tr td fish td td salmon td tr tr
  • IE11不监听MSFullscreenChange事件

    我正在尝试使用 Bigscreen js 在 IE11 中使用全屏 但 IE11 不监听 MS FullscreenChange 事件 document addEventListener MSFullscreenChange functio
  • 将 javascript 整数转换为字节数组并返回

    function intFromBytes x var val 0 for var i 0 i lt x length i val x i if i lt x length 1 val val lt lt 8 return val func
  • 我可以停止 :hover 应用于元素吗?

    假设我有一些 CSS button hover font weight bold 我怎样才能防止 hover随意应用样式 我的目标用例是当元素被禁用时 例如 使用这个 HTML
  • Select2 下拉列表动态添加、删除和刷新项目

    这让我发疯 为什么 Select2 不能在其页面上实现清晰的方法或示例如何在 Select2 上进行简单的 CRUD 操作 我有一个 select2 从 ajax 调用获取数据
  • JavaScript 代码在不使用 ActiveX 的情况下截取网站屏幕截图

    我有一个用户与之交互的 JavaScript 应用程序 我需要保存当前界面的外观 裁剪出我需要的部分 或者通过指定div只拍摄我需要的部分 然后发送回服务器 显然任何外部服务都无法做到这一点 我需要一个 JavaScript 或Flash
  • JavaScript onresize 事件多次触发

    我在尝试仅在触发 onresize 事件时运行一次函数时遇到一些麻烦 我已经看过这个问题DOM onresize 事件 https stackoverflow com questions 1500312 javascript onresiz
  • 单击引导分页链接时调用 jquery 函数

    我想在单击引导分页链接时调用 jquery 函数 假设我想从第1页遍历到第2页 应该调用一个jquery函数 我正在使用以下代码 但它不起作用 ul pagination on click li function alert page ch
  • HTML 默认图像大小

    我在我的代码上显示 3 张图片 图片具有不同的尺寸 宽度和高度 div class row div class col lg 12 h2 class page header Gallery h2 div div class col md 4
  • 单击列表时使用 bootstrap Dropdown 防止下拉菜单消失

    我正在使用使用引导下拉菜单 http twitter github com bootstrap javascript html dropdowns生成下拉菜单 我想防止点击菜单时菜单消失 我已经实现了以下代码 但它不起作用 知道如何修复它吗

随机推荐

  • 在 R 中绘制决策边界

    我有一系列来自的建模类标签knn功能 我有一个包含基本数字训练数据的数据框 以及另一个用于测试数据的数据框 我将如何为返回值绘制决策边界knn功能 我必须在锁定的计算机上复制我的发现 因此如果可能 请限制第三方库的使用 我只有两个类别标签
  • 当 setMaximumSize() 和 setPreferedSize() 不起作用时,如何对 JComponent 设置硬限制?

    我正在尝试制作一个类似于 Photoshop 或 Paint Shop Pro 中的图像处理框架 但我遇到了问题 现在我有一个带有 JDesktopPane 的 JFrame 窗口 当我单击按钮时 会生成一个 JInternalFrame
  • Coq 中是否有一套最小完整的策略?

    我见过很多 Coq 策略 它们在功能上是相互重叠的 例如 当你在假设中得到确切的结论时 你可以使用assumption apply exact trivial 也许还有其他人 其他例子包括destruct and induction对于无感
  • 从 C# 进行 VLC 远程控制

    我正在尝试从 C 控制 VLC 媒体播放器 我尝试使用 Net 中的 FindWindow 命令获取窗口句柄 但我发现每次播放文件时窗口的名称都会发生变化 我遇到的最大问题是将 wm commands 发送到 vlc 这种方法适用于 Win
  • 在 Android 中将文件从内部存储复制到外部存储

    My app 安卓API 15 制作一张图片并将其存储在内存的文件夹中 现在 我想将此文件复制到外部存储内的另一个文件夹 例如 sdcard myapp 我尝试了以下方法 方法 1 private void copyFile File sr
  • Python Google cloud firestore错误504超过截止日期

    我在 python 中有一个 fore firestore 函数 其中我为一个集合的所有用户执行 for 循环 然后进入另一个集合以获取一些指标 并在第一个集合中更新此指标 我运行该函数 但在执行过程中的某个时刻该函数中断并给出以下错误 R
  • 对包含字母数字条目的 VARCHAR 列进行排序

    我正在使用 SQL Server 该列是VARCHAR 50 我想这样排序 1A 1B 2 2 3 4A 4B 4C 5A 5B 5C 5N 14 Draft 21 22A 22B 23A 23B 23C 23D 23E 25 26 FR0
  • 我无法准确理解 JavaScript 的方法 string.match(regexp) 的 g 标志是如何工作的

    在 JavaScript The Good Parts 一书中 它解释了方法string match regexp 如下 match 方法匹配一个字符串和一个正则表达式 如何 这取决于 g 标志吗 如果没有 g 标志 则 调用 string
  • Angularjs - 在 tr ng-repeat 中添加额外的行

    NG repeat 出现在表行上 我的问题是我们如何才能实现以下目标 tr Looping here tr 现在 当数据对象在 a 上循环时 tr 我有一个场景 我必须将 1 行数据分成两部分显示 tr Eg Table 数据1 数据1 2
  • React:ReferenceError:regeneratorRuntime 未定义

    我正在尝试在我的反应应用程序中使用异步和等待 onSubmit async model gt await this setState data model 添加上述代码后 我在浏览器控制台中收到错误 ReferenceError 未定义 r
  • Android 屏幕在显示/隐藏系统栏时闪烁

    问题 我想在用户向上滚动 RecyclerView 时显示系统栏 并在用户向下滚动时隐藏系统栏 然而 使用我的方法它可以工作 但内容在显示 隐藏过程中奇怪地移动和闪烁 您在此处上传了该行为的视频 https drive google com
  • 获取 Java 堆栈跟踪中涉及的对象

    我可以使用检索当前堆栈跟踪Thread currentThread getStackTrace 但这只给了我调用中涉及的类 是否可以检索调用跟踪中涉及的对象实例 也许某种库允许我从堆中检索对象 我有一个问题 需要我追溯到一个 Spring
  • 如何在 numpy 中对二维数组进行装箱?

    我是 numpy 的新手 我有一个 2D 对象数组 我需要将其装入一个较小的矩阵中 然后获取每个容器中对象的数量以制作热图 我按照答案在这个线程上创建垃圾箱并对一个简单的数组进行计数 但我不确定如何将其扩展到二维 这是我到目前为止所拥有的
  • 如何在没有 Activity/Service 的情况下创建 BroadcastReceiver?

    我正在尝试创建没有活动 服务的 BroadcastReceiver 虽然当代码中存在活动时 当我删除活动时 注册和执行代码没有问题 但它失败了 我确实使用清单注册了 BroadcastReceiver 但是当从项目中删除活动时 它不会被调用
  • Java-声明新的泛型集时出现意外的类型错误

    我以为我知道我在用泛型做什么 但显然不知道 ArraySetList
  • 在Python中绘制二维矩阵,代码和最有用的可视化

    我有一个非常大的矩阵 10x55678 采用 numpy 矩阵格式 该矩阵的行对应于一些 主题 列对应于单词 文本语料库中的唯一单词 该矩阵中的每个条目 i j 都是一个概率 这意味着单词 j 以概率 x 属于主题 i 因为我使用的是 id
  • 如何使用IntentCompat.makeRestartActivityTask()?

    我正在尝试实现一个按钮 该按钮将导致我的应用程序返回到第一个活动并表现得好像它 几乎 重新启动了一样 这段代码 Intent newIntent new Intent currentActivity getApplicationContex
  • 如何在 php 中将奇怪的强/粗体 Unicode 转换为非粗体 UTF-8 字符?

    我正在尝试使用 twitter api 在我的数据库中存储一条推文 但我得到了这种 stage 字符 它似乎是 自然 粗体字符 普通字符 azertyuio 奇怪的字符 如果我在我的 netbeans 编辑器中粘贴最强的字符 我会得到类似方
  • 通过 VBScript 了解用户是否具有管理权限的最佳方法

    我需要检查执行脚本的用户是否具有计算机的管理权限 我已经指定了执行脚本的用户 因为该脚本可以使用除使用类似于 Runas 的用户登录之外的用户执行 Javier 这两种解决方案都可以在安装了英文版 Windows 的 PC 上运行 但如果安
  • 获取 contenteditable div 中的插入符索引(包括标签)

    我有一个contentEditable div其中我有多个标签 br b u i 和文本 我需要获取相对于 div 的插入符索引位置 包括所有标签 例如 div abc b def br ghi b jkl div 如果光标位于g and