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

前端富文本基础及实现

文档变成可编辑后,就可以像使用文字处理程序一样编辑文本。 效果如图: 元素设置 contenteditable 第二种方式是使用 contenteditable 属性指定 HTML 文档元素。...如果 anchorNode 是字符串则对应文字下标,anchorNode 是元素,则对应选中区域对应它之前同级节点数目。 focusNode 返回选中区域终点所在节点。...rangeCount 返回选中区域所对应连续范围内数量。 type 返回选中区域所对应类别是连续 (Range),还是同一个位置 (Caret)。...想删除后插入,可获取新 Selection 对象,利用此时位置所在 dom 元素方法插入对应文字、元素。...标签, insertImage 在光标位置插入图片 图片 URL 链接 insertParagraph 在光标位置插入元素 null italic 切换选中文本斜体样式 null styleWithCSS

4.4K50
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    最新最全自己动手做一个富文本编辑器(附源码 api)

    我们来用大白话说一下富文本编辑器原理 将一个div设置属性 contenteditable="true" 设置加粗,加横线,放大字体等效果 使用 document.execCommand('bold...formatBlock: 添加一个HTML块式标签在包含当前选择行, 如果已经存在了,更换包含该行元素 (在 Firefox, BLOCKQUOTE 是一个例外 -它将包含任何包含块元素)....(IE会在插入点插入一个段落并删除选中部分.) insertText: 在光标插入位置插入文本内容或者覆盖所选文本内容。 italic: 在光标插入点开启或关闭斜体字。...paste: 在光标位置粘贴剪贴板内容,如果有被选中内容,会被替换。剪贴板功能必须在 user.js 配置文件启用。参阅 [1]. redo: 重做被撤销操作。...参数预期那样工作, i.e. true modifies/generates 风格标记属性, false 生成格式化元素。 虽然支持命令有那么多,但也并不是所有的命令,所有浏览器都支持.

    2.5K20

    造一个 react-contenteditable 轮子

    回答: 当时试了一下确实很好玩,于是每次都可以在妹子面前秀一波操作,在他们惊叹目光,我心里开心地笑了——嗯,又让一个不懂技术的人发现到了程序美,咳咳。...浏览器会修改元素部件以允许编辑。详情可看 MDN 文档。...: (nextProps: Props, thisProps: Props) => boolean // 判断是否应该更新 } 在 shouldComponentUpdate 里返回这个函数返回值即可...补充 props 除了上面一些比较重要 props,还有一些增强扩展性 props, disabled, tagName。...,比如 这篇 Stackoverflow 上讨论,再加上上面提到蛋疼 Issue,如果真要在生产环境实现富文本最好不要用这个库,推荐使用 draft.js。

    1.7K20

    文档和元素几何滚动

    失去焦点触发blur事件 在事件处理程序代码关键字this将会触发该事件文档元素一个引用,或者通过this.form.x得到该表单以x命名元素 事件总结 提交触发事件 当用户单击按钮(或者回车时候...提交和重置元素本就是按钮,不同是它们有与之相关联默认动作。 即,按钮和超链接类似,都具有共同作用。 开关按钮 复选框和单选元素为开关按钮,或称之为有两种视觉状态按钮。即选中或未选中。...单选元素为整组有相关性元素而设计,组内所有按钮HTML属性name值都相同。按照这种方式创建按钮为互斥。利用表单属性名字选中元素时,它返回一个类数组对象而不是单个元素。...单选和复选框都定义了checked属性,指定了元素当前是否选中。defaultChecked属性也为布尔值,为htmlchecked值,指定了元素在第一次加载页面时是否选中。...注意是在页面加载时候渲染,这点很容易迷 查询选取文档 这个用来判断用户选择了那些文本 windw.getSelection().tostring(); 可编辑内容 设置标签contenteditable

    5.2K00

    Zepto这样操作元素属性

    紧接着再看当前选中元素集合第一个元素是否存在并且节点类型是否为element类型,如果是,再调用getAttribute获取name属性,结果不为null或者undefined的话直接返回,否则统一返回...html() 获取或设置对象集合中元素HTML内容。当没有给定content参数时,返回对象集合第一个元素。当给定content参数时,用其替换对象集合每个元素内容。...text() 获取或者设置所有对象集合中元素文本内容。 当没有给定content参数时,返回当前对象集合第一个元素文本内容(包含子节点中文本内容)。...当给定content参数时,使用它替换对象集合中所有元素文本内容。...,最后还是通过调用pluck函数返回该option元素集合value数组。

    78010

    Zepto这样操作元素属性

    紧接着再看当前选中元素集合第一个元素是否存在并且节点类型是否为element类型,如果是,再调用getAttribute获取name属性,结果不为null或者undefined的话直接返回,否则统一返回...html() 获取或设置对象集合中元素HTML内容。当没有给定content参数时,返回对象集合第一个元素。当给定content参数时,用其替换对象集合每个元素内容。...text() 获取或者设置所有对象集合中元素文本内容。 当没有给定content参数时,返回当前对象集合第一个元素文本内容(包含子节点中文本内容)。...this.pluck('textContent').join("") : null) 0 in this 当前是否选中元素,没有直接返回null,有则通过this.pluck('textContent...,最后还是通过调用pluck函数返回该option元素集合value数组。

    2.3K70

    Selenium4+Python3系列(八) - Cookie、截图、单选框及复选框处理、富文本框、日历控件操作

    使用element.is_selected()来获取元素是否为选中状态,返回结果为布尔类型,如果为选中状态返回True,如果未选中返回为False。...= element.is_selected() # 查看李白是否被选中 if isSelected: print('李白已被选中,你只能选下一个英雄了') # 获取第3个单选框露娜元素对象...富文本编辑器,Rich Text Editor, 简称 RTE, 是一种可内嵌于浏览器,所见即所得文本编辑器。...具体长啥样,如下图: image.png 2、通过键盘事件操作富文本 通过Tab键,先移到富文本,自己需要提前数好需要按几下tab,才能介入,多写几个tab,也无妨,因为只有进入富文本,tab相当于缩进了...示例代码如下: action=ActionChains(driver) # 鼠标通过tab要先移到富文本(自己需要提前数好需要按几下tab,才能介入,多写几个tab,也无妨,因为只有进入富文本,tab

    2.5K20

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

    [5531211-b71cbd48561dd566.jpg] 前来挖墙脚是htmlcontenteditable,他是一个全局属性,可以大致理解为"可以使一个元素处于可编辑状态",像极了textarea...> 然后激动切到页面上看效果,发现空空也: [1240] 经过一番研究,想要在页面上编辑style元素,必须要满足以下两点: style元素必须放在body元素内 style元素要设置...,内容会新增div元素,破坏了原有的文本结构: [strip] [1240] 解决 网上冲浪查资料后,发现了一个css属性 - user-modify,可取值为以下四个: read-only read-write...write-only read-write-plaintext-only CSS user-modify属性行为表现测试实例页面 我们取第四个值就行,定义内容只可输入纯文本,因此回车也就不会产生div...总结 麦当劳家有金桶挺好吃

    57040

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

    缘起 最近产品想让我在富文本里加个旋转图片功能,我一想?,就觉得事情并不简单,因为印象好像没见过这种操作。果然,经过一番百度之后,确实没怎么看到相关信息,这也就意味着要自己动手丰衣足食了?。...: 一句话说就是:通过上面那句命令我们能够获取到当前选中信息,一般会先保存下来,然后在需要时候还原。...这个知识点是很重要,因为它让我们有了操纵光标的能力(比如插入内容之后设置光标的位置),不过这篇文章我并没有去深入它,只是浅出?。 目标 开篇一顿扯,下面让我们抓紧时间做一个属于自己文本吧?...style 里面如果加上 scope 的话,里面的样式对编辑区内容是不生效,因为编辑区里面是后来才创建元素,所以要么删了 scope,要么用 /deep/ 解决(Vue 是这样)。...当然了,你也可以先上传到服务器处理返回 url 地址再插入也是可以。 ?至此,一个简易版文本就完成了(当然了 bug 也是有的?

    2K40

    Notion 编辑器原理分析

    contenteditable 又有很多原生能力,速度快且支持所有的浏览器、光标与选区、输入法事件等;ipad 下 contenteditable 也提供较多有意思能力,如左右分栏时可直接从其它应用拖动文字到...contenteditable 。...上面为各种 block 内容 react 渲染组件,负责组件具体渲染与行为, block type 为 text 则渲染成 contenteditable div。...同时被选中 block 元素记录在 l.default.state.stores ,并再次触发 react 重新渲染,每个组件都会通过 Block id 判断是否被选中了,当被选中则给 Block...contenteditablecontenteditable 负责文字呈现与用户事件接收,接收到事件后再自己处理,文字加粗、文字录入、文字颜色等,并最终生成 notion op 来修改 block

    2.5K30

    JavaScript理解记录(5)

    返回一个NodeList对象或Element;功能与JQuery类库()相似,两者参数相同,不同是:()返回值为一个JQuery对象表示匹配元素集,JQuery对象是一个类数组,可以用标准数组标示方括号来访问...:input[name='button']; 5、组合使用:span.fatal.error //其class包含fatal和error元素;     3、 文档结构:作为节点树解析...不同属性获取不同内容;          innerHTML : 元素内容作为字符串返回;          outerHTML :返回字符包含查询元素开头和结尾标签;(HTML5才有且FireFox...浏览器不支持)          textContent: 返回文本;IE不支持          innerText:也是返回文本,但不返回元素内容;FireFox不支持;...         其二:设置对应元素JavaScript contenteditable属性;         浏览器定义了多项文本编辑命令,为了执行这些命令,应该使用Document

    1.4K20

    JS 实现复制粘贴功能

    AbsolutePosition 设定元素 position 属性为“absolute”(绝对)。 BackColor 设置或获取当前选中背景颜色。 BlockDirLTR 目前尚未支持。...FontName 设置或获取当前选中字体。 FontSize 设置或获取当前选中字体大小。 ForeColor 设置或获取当前选中前景(文本)颜色。...JustifyRight 将当前选中区所在格式化块右对齐。 LiveResize 迫使 MSHTML 编辑器在缩放或移动过程持续更新元素外观,而不是只在移动或缩放完成后更新。...MultipleSelection 允许当用户按住 Shift 或 Ctrl 键时一次选中多于一个站点可选元素。 Open 目前尚未支持。 Outdent 减少选中区所在格式化块缩进。...UnBookmark 从当前选中删除全部书签。 Underline 切换当前选中下划线显示与否。 Undo 目前尚未支持。 Unlink 从当前选中删除全部超级链接。

    4.7K30

    contenteditable跟style标签可真是天生一对

    contenteditable是html一个全局属性,可以大致理解为"可以使一个元素处于可编辑状态",像极了textarea,不过还是存在许多不足跟问题,比如没有change钩子等,本文不作深入探讨❌...乍一看,好像很普通,但是它可以解决一个textarea一个痛点,那就是可以自适应高度,textarea可不行 ❕ 正菜 假如... 把该属性加在style元素上呢?...> 然后激动切到页面上看效果,发现空空也: ?...缺点 存在缺点很明显,我也很刻意去避开,那就是代码无法换行,因为回车后,内容会新增div元素,破坏了原有的文本结构: ? ?...user-modify,可取值为以下四个: read-only read-write write-only read-write-plaintext-only 我们取第四个值就行,定义内容只可输入纯文本

    1.7K21

    不得不安利文本编辑器,太赞了!

    我们可以轻松选中文本来设置文本样式: 同时还能对文本内容进行评论: 当然插入表格和代码等区块也是支持: 接下来就和大家一起分享一下它设计思路。...我们可以将一个 contentEditable DOM 元素附加到编辑器实例,并注册侦听器和命令。最重要是,编辑器允许更新其 EditorState。...我们可以使用 createEditor() API 创建编辑器实例,但是在使用框架绑定(@lexical/react)时,通常不必担心,因为这会为我们自动处理。...但是,也可以使用节点变换或命令处理程序“挂钩”到现有更新 - 这些处理程序作为现有更新工作流程一部分被调用,以防止更新级联/瀑布。...// 插入元素 root.append(paragraphNode); }); 通过以上两步,我们就实现了文本编辑器创建和更新,是不是非常简单?

    76210

    前端如何防止数据被异常篡改并且复原数据

    所以,最近在做这么一个谷歌扩展插件 chrome-extension-text-formatting,通过谷歌扩展,快速将选中文本,格式化为符合 中文文案排版指北 文本。 emmm,什么是排版指南?...所以,我就想着实现这么一个谷歌插件扩展,一键实现选中文本格式化。 看个示意图: 适用于各种文本编辑框,当然 Excel 也可以: 当然,这都不是本文重点。...contenteditable 属性,实现了一个可编辑 DIV 框: 接下来,我们就可以利用 MutationObserver,实现对这个 DOM 元素监听,实现每当此元素内容发生改变,就触发 MutationObserver...将变化信息存储在 changes 数组 changes 数组每个元素记录了一次 DOM 变化信息。...target:表示发生变化目标元素。 addedNodes:一个包含新增节点数组,表示在变化添加节点。 removedNodes:一个包含移除节点数组,表示在变化移除节点。

    30840

    表单脚本

    一、表单基础知识 在HTML,表单由元素来表示,而在JavaScript,表单对应则是HTMLFormElement类型。...form.elements[n]; // 返回第n+1个元素 form.elements[“name”]; // 返回name值为“name”NodeList <form action...是否支持多项选择 options 所有项集合 remove(index) 移除给定位置选项 selectIndex 基于0选中索引,如果没有选中项,则该值为-1;对于支持多选控件,只保存选中第一项索引...移动和重排选项 DOMappendChild方法(只能添加到最后),如果appendChild传入一个文档已有的元素,那么就会先从该元素父节点中移除它,再把它添加到指定位置。...不发送type为“reset”和“button”按钮; 选择框每个选中值单独条目发送; 五、富文本编辑 contenteditable:用户立即可编辑该元素 data:text/html, <html

    4.8K41
    领券