首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在 contenteditable div 中的特定位置添加/插入/更新文本?

在 contenteditable div 中的特定位置添加/插入/更新文本的方法有很多种,以下是一些常用的方法:

  1. 使用 innerHTML

通过使用 innerHTML,可以在 contenteditable div 中直接插入 HTML 代码。例如:

代码语言:txt
复制
<div id="content" contenteditable="true">
  <p>Hello, world!</p>
</div>

<script>
  var content = document.getElementById("content");
  content.innerHTML = "<p>Hello, world!</p>";
</script>

这种方法比较简单,但是存在一些安全隐患,例如容易受到 XSS 攻击等。

  1. 使用 textContent

textContent 属性是 contenteditable 元素的一个只读属性,表示元素的文本内容,不包括 HTML 标记。可以使用 textContent 来插入文本。例如:

代码语言:txt
复制
<div id="content" contenteditable="true">
  <p>Hello, world!</p>
</div>

<script>
  var content = document.getElementById("content");
  content.textContent = "Hello, world!";
</script>

这种方法比 innerHTML 更安全,但是插入的文本不会包含 HTML 标记。

  1. 使用 createTextRange

createTextRange 方法可以创建一个文本选区,可以使用 select 方法来插入文本。例如:

代码语言:txt
复制
<div id="content" contenteditable="true">
  <p>Hello, world!</p>
</div>

<script>
  var content = document.getElementById("content");
  var range = document.createRange();
  range.selectNodeContents(content);
  range.collapse(false);
  var selection = window.getSelection();
  selection.removeAllRanges();
  selection.addRange(range);
  content.focus();
</script>

这种方法可以在 contenteditable div 中插入文本,并且可以插入多行文本。

以上是一些常用的方法,当然还有其他的方法可以插入文本,具体可以根据实际情况选择。需要注意的是,在插入文本之前,需要先选择要插入的位置,可以使用 select 方法来选择。另外,在插入文本之后,需要将文本设置为 focus 状态,以便用户可以编辑。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

文本编辑器开发简介

前言 富文本编辑器,Rich Text Editor, 简称 RTE, 是一种可内嵌于浏览器,所见即所得文本编辑器。 方式 iframe 页面嵌入一个包含空HTML页面的iframe。...anchorOffset:在到达选区起点位置之前跳过anchorNode字符数量 focusNode:选区终点所在节点 focusOffset:focusNode包含在选区之内字符数量 isCollapsed...:布尔值,表示选区起点和终点是否重合 rangeCount:选区包含DOM范围数量 方法 addRange(range):将指定DOM范围添加到选区 collapse(node,offset...):将选区折叠到指定节点中相应文本偏移位置 collapseToEnd():将选区折叠到终点位置 collapseToStart():将选区折叠到起点位置 containsNode(node):确定指定节点是否包含在选区...表单提交 富文本编辑不是使用表单控件实现,而需要手工来提取并提交HTML。为此,通常可以添加一个隐藏表单字段,就是在提交表单之前提取出HTML,并将其插入到隐藏字段

4.2K20

前端富文本基础及实现

文档变成可编辑后,就可以像使用文字处理程序一样编辑文本。 效果如图: 元素设置 contenteditable 第二种方式是使用 contenteditable 属性指定 HTML 文档元素。...该方式是 IE 最早实现。使用方式是在一个元素上添加 contenteditable 属性并设置为 true,然后该元素会立即被用户编辑。...Selection 对象表示用户选择文本范围或插入符号的当前位置。它代表页面文本选区,可能横跨多个元素。文本选区由用户拖拽鼠标经过文字而产生。...想删除后插入,可获取新 Selection 对象,利用此时位置所在 dom 元素方法插入对应文字、元素。...标签, insertImage 在光标位置插入图片 图片 URL 链接 insertParagraph 在光标位置插入元素 null italic 切换选中文本斜体样式 null styleWithCSS

4.4K50
  • 【富文本】268- 富文本原理了解一下?

    contenteditable 属性 假如我们给一个标签加上 contenteditable="true" 属性,就像这样: 那么在这个...div 我们就可以对其进行任意编辑了。...如果想要插入子节点不可编辑,我们只需要把子节点属性设置为 contenteditable="false" 即可,就像这样: 这是可编辑...这个知识点是很重要,因为它让我们有了操纵光标的能力(比如插入内容之后设置光标的位置),不过这篇文章我并没有去深入它,只是浅出?。 目标 开篇一顿扯,下面让我们抓紧时间做一个属于自己文本吧?...当然了,你也可以先上传到服务器处理返回 url 地址再插入也是可以。 ?至此,一个简易版文本就完成了(当然了 bug 也是有的?

    2K40

    【Web技术】421- 富文本原理介绍

    contenteditable 属性 假如我们给一个标签加上 contenteditable="true" 属性,就像这样: 那么在这个...div 我们就可以对其进行任意编辑了。...如果想要插入子节点不可编辑,我们只需要把子节点属性设置为 contenteditable="false" 即可,就像这样: 这是可编辑...这个知识点是很重要,因为它让我们有了操纵光标的能力(比如插入内容之后设置光标的位置),不过这篇文章我并没有去深入它,只是浅出?。 目标 开篇一顿扯,下面让我们抓紧时间做一个属于自己文本吧?...当然了,你也可以先上传到服务器处理返回 url 地址再插入也是可以。 ?至此,一个简易版文本就完成了(当然了 bug 也是有的?

    1K20

    【实战】我是如何在输入框实现@ At功能

    ) 当前需求拆解 按住shift + @ 时候,弹出通知列表 选择时 @用户标签插入当前光标位置 生成@用户标签规则是:高亮、携带用户ID、一键删除信息、不可以编辑。...通过$event 可以获取键盘keyCode 达到监听目的 e.preventDefault 可以阻止我输入@字符默认事件 getSelection 可以获取光标的位置、给插入标签一个坐标。...要兼容中文输入法时候@事件判断(:中文输入法打“哈哈哈@” 这个时候不能监听@事件 ) 中文输入法时候单独输入@时 怎么判断中文输入?...Event.returnValue 兼容IE取消默认事件 到现在我们核心功能已经完成了。通过@人监听事件,通过我们自定义标签插入,通过getSelection获取到光标位置。...获取光标的坐标在文本位置 caret-pos 从 textarea、contentedtiable 或 iframe 正文中获取插入符号/光标的位置/偏移量 import { position, offset

    2.5K20

    造一个 react-contenteditable 轮子

    回答: 当时试了一下确实很好玩,于是每次都可以在妹子面前秀一波操作,在他们惊叹目光,我心里开心地笑了——嗯,又让一个不懂技术的人发现到了程序美,咳咳。...那用 div 包裹呢?也不对:div 不能输入啊,唉,谁说不能输入contentEditable 属性就是可以让用户手动输入。...解决方法是在 componentDidUpdate 里把光标重新放到最后就可以了,每次渲染后光标回到最后位置。...完全起不到性能优化作用。 一个比较折中方案是添加一个 checkUpdate props 给使用的人去做性能优化。源码是对每次值以及一些 props 更新进行判定是否需要更新。...补充 props 除了上面一些比较重要 props,还有一些增强扩展性 props, disabled, tagName。

    1.7K20

    精读《可视化搭建思考 - 富文本搭建》

    基于富文本可视化搭建看似很新颖,但其实早就被广泛使用了,任何一个富文本编辑器几乎都有插入表格功能,这就是一个典型插入自定义组件场景。...积木式搭建和富文本搭建区别 富文本文本为中心,因此编辑文字光标会常驻,编辑核心逻辑是排版文字,并考虑如何在文字周围添加一些自定义区块。...有了光标后,圈选也非常重要,因为大家编辑文字时有一种很自然想法是,任何文字圈选后复制,可以粘贴到任何地方,那么所有插入到富文本自定义组件也要支持被圈选,被复制。...可以看出来这是一种结合尝试,从前端角度来看,富文本本质上是对一个 div 进行 contenteditable 申明,那么一个应用可以整体是 contenteditable ,也可以局部几个区块是,.../div> 只要拖拽 bar-chart、div 两个组件即可,div 内部文字通过光标输入,line-chart 通过富文本某个按钮或者键盘快捷键添加

    1.1K10

    如何从头手写一个富文本编辑器(解析slate源码,连载)

    > ); } export default App; 效果图: 第二天,掌控浏览器光标 小标题又可以叫做在接管输入文字以后,我们可以怎样在富文本光标位置输入文本...作为一个富文本编辑器这是不可饶恕。 那么现在,我们来完善这个问题。 首先,我们知道如何获取光标的位置,以及对应文本位置。...这里我们会用到window.getSelection() api来获取光标所在dom,以及光标在dom中文本位置。...如果光标选中一个范围 } // console.log(root[0].children[0] === node, root[0].children[0], node) } 我们实现了在光标位置插入文本...在监听修改window.root,并在里面更新txt和txtO,最后清除光标,防止txt更新导致光标闪动。

    2.9K30

    JavaScript理解记录(5)

    ,返回一个NodeList对象或Element;功能与JQuery类库()相似,两者参数相同,不同是:()返回值为一个JQuery对象表示匹配元素集,JQuery对象是一个类数组,可以用标准数组标示方括号来访问...insertBefore():两个参数,第一个参数是待插入节点,第二个参数是该父节点子节点,可以为null,为null是功能与appendChild相同;                如果使用以上两个方法再次插入已经存在节点...,已存在节点将会自动从它的当前位置删除并在新位置从新插入,可以用来做单页表格排序等,不改变表格数据,只改变节点顺序;          3、删除和替换节点:删除节点:removeChild() 替换节点...contenteditable属性;edit........         其二:设置对应元素JavaScript contenteditable属性;         浏览器定义了多项文本编辑命令,为了执行这些命令,应该使用Document

    1.4K20

    三种插件开发模式,带你玩废tinymce

    前言 TinyMCE是一款开源、易用、UI时新、所见即所得文本编辑器。是富文本领域中佼佼者。整体设计和模式,都是非常不错。...再次使用常规 DOM 方法克隆模板并将其附加到您 shadow DOM 。 在页面任何您喜欢位置使用自定义元素,就像使用常规 HTML 元素那样。...哪该如何转化,还得再了解认识一下 tinymce tinymce 富文本编辑数据 会抽象为 ASTNode (可以直接看成tinymce官方自制简易版DOM树),打印出来如下图 既然有转换...tinymce 实例 Window 因为自定义节点是插入 tinymce 实例。...tinymce 实例 Window 因为自定义节点是插入 tinymce 实例

    4.9K30

    用Rust和React创建一个富文本编辑器

    此外,每个注释只有一个偏移量简单性使我们很容易实现我们用于协作操作转换(OT)算法。 核心逻辑 随着数据模型出现,也带来了与之互动代码。当你在一个单元格打字时,我们在哪里插入新打的字符?...这是因为浏览器通常只识别两种类型编辑器:纯文本编辑器,和元素,以及使用一种叫做contenteditable属性创建自由格式编辑器。我们编辑器两者都不是。...然后,我们添加了必要事件处理程序来捕捉用户互动,这又将再次调用数据模型上适当逻辑。 那么用户光标呢?只是另一个我们自己插入小React组件。...上一节例子显示了如何向左和向右移动光标。但是如果用户按了向下箭头,他们光标最终会在哪两个字符之间呢?这不是一个简单问题,因为保持光标的垂直位置需要测量上面那一行字符位置。...为了在更新我们数据模型时能够保留用户意图(OT算法一个重要方面),最好是了解导致任何变化互动。但是,如果你试图理解浏览器对DOM在内容可编辑元素变化,你最多只能是猜测。

    2.6K133

    实现一个简单编辑器

    什么是 contenteditable HTML contenteditable 属性可以打开某些元素可编辑状态.也许你没用过 contenteditable 属性.甚至从未听说过. contenteditable...作用相当神奇.可以让 div 或整个网页,以及 span 等等元素设置为可写。...我们最常用输入文本内容便是 inpu t与t extarea ,使用 contenteditable 属性后,可以在 div , table , p , span , body ,等等很多元素输入内容...即通过 contenteditable 可以让普通元素实现可编辑状态。 2. 什么是 Selection Selection 对象表示用户选择文本范围或插入符号的当前位置。...它代表页面文本选区,可能横跨多个元素。文本选区由用户拖拽鼠标经过文字而产生。要获取用于检查或修改 Selection 对象,请调用 window.getSelection() 。 3.

    1K20

    user-modify跟style标签可真是天生一对?

    [5531211-b71cbd48561dd566.jpg] 前来挖墙脚是htmlcontenteditable,他是一个全局属性,可以大致理解为"可以使一个元素处于可编辑状态",像极了textarea...,不过还是存在许多不足跟问题,比如没有change钩子等,本文不作深入探讨❌ 开胃 使一个div可以进行内容编辑: 点击我进行编辑 [strip]...,是不是就可以在页面上直接编写样式并且自带"热更新"?...> 然后激动切到页面上看效果,发现空空也: [1240] 经过一番研究,想要在页面上编辑style元素,必须要满足以下两点: style元素必须放在body元素内 style元素要设置...write-only read-write-plaintext-only CSS user-modify属性行为表现测试实例页面 我们取第四个值就行,定义内容只可输入纯文本,因此回车也就不会产生div

    57040

    DLE-Billing 0.7.2 - 0.7.4 支付模块

    图片 0.7.3 更新日志: 该模块适用于 DLE 13.0 及更高版本。 更改了模块管理面板图标。 0.7.4 更新日志: 该模块完全适应插件系统。...“收据”部分已添加到用户个人帐户,该帐户显示所有收据列表。 模块设置添加了一个新项目,指示用户可以创建最大未付款收据数。 删除未付收据功能已添加到用户个人帐户。...在模板任意位置显示登录用户的当前余额,请添加代码: {include file="engine/modules/billing/widgets/balance.php"} 6....="quote">             这一行填写“隐藏文本插件”-“标签生成器”里面生成代码...,其中“隐藏文本”替换为自定义标签值:[xfvalue_payhide] [/xfgiven_payhide

    35230

    【 前端相关 网页样式 】总结CSS3“伪类”与“伪元素”

    虽然它和普通css类相似,可以为已有的元素添加样式,但是它只有处于dom树无法描述状态下才能为元素添加样式,所以将其称为伪类。 伪元素用于创建一些不在文档树元素,并为其添加样式。...比如说,我们可以通过:before来在一个元素前增加一些文本,并为这些文本添加样式。虽然用户可以看到这些文本,但是这些文本实际上不在文档树。...HTML: 点击这里可以编辑...目前,只有火狐浏览器支持:dir伪类,并在火狐浏览器中使用时需要添加前缀( -moz-dir() )。 如下例,p元素阿拉伯语(阿拉伯语是从右往左阅读文本会变成橙色。...需要使用content属性来指定要插入内容。被插入内容实际上不在文档树

    3K70
    领券