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

手把手教你实现网页端社交应用的@人功能:技术原理、代码示例等

但是使用的是 contenteditable 这个属性进行富文本操作。 相似之处在于 Twitter 的 ID 也是唯一,但是可以通过昵称进行搜索,然后转化成 ID,这一点体验上好了不少。...根据 Selection API 规范:一个选择可以包括零个或多个范围(不过实际上,只有 Firefox 允许使用 Ctrl+click (Mac 上用 Cmd+click) 文档中选择多个范围)。...这是 Firefox 做的一个具有 3 个范围的选择的截图: 其他浏览器最多支持 1 个范围。...正如我们看到的,某些 Selection 方法暗示可能有多个范围,但同样,Firefox 之外的所有浏览器,范围最多是 1。...综上所述:一般我们只有一个 Range,当我们的光标 contenteditablediv 上闪动的时候,其实就有了一个 Range,这个 Range 的开始和结束位置都是一样的。

1.1K10
您找到你想要的搜索结果了吗?
是的
没有找到

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

> ); } export default App; 效果图: 第二天,掌控浏览器光标 小标题又可以叫做在接管输入文字以后,我们可以怎样富文本光标位置输入文本...第一天,我们已经实现了,监听用户输入,并选择性的输入内容。虽然它使用的原理很有价值,但是这个编辑器有点low,不管用户在编辑器哪里输入,内容都只能在文本末尾追加。...首先,我们知道如何获取光标位置,以及对应文本的位置。这里我们会用到window.getSelection() api来获取光标所在的dom,以及光标dom中文本的位置。...但是光标输入后位置不对了,我们接下来要改变光标。...监听修改window.root,并在里面更新txt和txtO,最后清除光标,防止txt更新导致光标闪动。

2.9K30

2016.07 第3周 群问题分享

而用div来模拟时,首先遇到的问题是:div怎么实现输入功能? contenteditable 属性规定是否可编辑元素的内容。...可能我们还是第一次见到这个属性contenteditable,如一个普通的元素上加上contenteditable="true"就实现可编辑状态,就出现光标了。...如 效果: ? contenteditable属性虽是HTML5里面的内容,但是IE似乎老早就支持此标签属性了。...FireFox外的浏览器下都保持良好兼容性,如需使用事件委托,可考虑FireFox使用事件流elem.addEventListener(‘focus’, handler, true) 可获得焦点的元素...= [this[0]]; //结果数组 for(var i = 1; i < this.length; i++) { //从第二项开始遍历 //如果当前数组的第i项在当前数组第一次出现的位置不是

91780

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

这是不可编辑的 该属性最早是 IE 上实现的(厉害哦?)...(光标可以看做是范围重合的特殊状态),一个页面用户可能选择多个范围(比如 Firefox)。...这个知识点是很重要的,因为它让我们有了操纵光标的能力(比如插入内容之后设置光标位置),不过这篇文章我并没有去深入它,只是浅出?。 目标 开篇一顿扯,下面让我们抓紧时间做一个属于自己的富文本吧?...点击的图片上创建个大小一样的 div 如果点击的是一个图片,那我们就创建一个 div ,暂且把这个 div 叫做蒙层吧,顺便先看张示意图: 也就是动态创建一个蒙层(和图片一样大小)以及四个拖拽顶点,并定位到和图片一样的位置...所以我们需要具有控制光标的能力,具体操作就是点击按钮之前我们可以先存储当前光标的状态,执行完命令或者需要的时候后再还原或设置光标的状态即可。

1.9K40

造一个 react-contenteditable 轮子

的回答: 当时试了一下确实很好玩,于是每次都可以妹子面前秀一波操作,在他们惊叹的目光,我心里开心地笑了——嗯,又让一个不懂技术的人发现到了程序的美,咳咳。...那用 div 包裹呢?也不对:div 不能输入啊,唉,谁说不能输入的?contentEditable 属性就是可以让用户手动输入的。...解决方法是 componentDidUpdate 里把光标重新放到最后就可以了,每次渲染后光标回到最后的位置。...isFocused) return // 光标放到最后 const selection = window.getSelection() if (selection !...的组件就完成了,主要实现了: value 和 onChange 的数据流 componentDidUpdate 里处理光标总是被放在最前面的问题 shouldComponentUpdate 里添加

1.7K20

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

这是不可编辑的 该属性最早是 IE 上实现的(厉害哦?)...(光标可以看做是范围重合的特殊状态),一个页面用户可能选择多个范围(比如 Firefox)。...这个知识点是很重要的,因为它让我们有了操纵光标的能力(比如插入内容之后设置光标位置),不过这篇文章我并没有去深入它,只是浅出?。 目标 开篇一顿扯,下面让我们抓紧时间做一个属于自己的富文本吧?...点击的图片上创建个大小一样的 div 如果点击的是一个图片,那我们就创建一个 div ,暂且把这个 div 叫做蒙层吧,顺便先看张示意图: 也就是动态创建一个蒙层(和图片一样大小)以及四个拖拽顶点,并定位到和图片一样的位置...所以我们需要具有控制光标的能力,具体操作就是点击按钮之前我们可以先存储当前光标的状态,执行完命令或者需要的时候后再还原或设置光标的状态即可。

98720

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

我们来用大白话说一下富文本编辑器原理 一个div设置属性 contenteditable="true" 设置加粗,加横线,放大字体等效果 使用 document.execCommand('bold...formatBlock: 添加一个HTML块式标签在包含当前选择的行, 如果已经存在了,更换包含该行的块元素 ( Firefox, BLOCKQUOTE 是一个例外 -它将包含任何包含块元素)....(IE浏览器不支持) indent: 缩进选择或插入点所在的行, Firefox , 如果选择多行,但是这些行存在不同级别的缩进, 只有缩进最少的行被缩进。...italic: 光标插入点开启或关闭斜体字。 (Internet Explorer 使用 EM 标签,而不是 I ) justifyCenter: 对光标插入位置或者所选内容进行文字居中。...justifyRight: 对光标插入位置或者所选内容进行右对齐。 outdent: 对光标插入行或者所选行内容减少缩进量。 paste: 光标位置粘贴剪贴板的内容,如果有被选中的内容,会被替换。

2.3K20

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

) 当前需求的拆解 按住shift + @ 的时候,弹出通知列表 选择时 @的用户标签插入当前的光标位置 生成@的用户标签的规则是:高亮、携带用户ID、一键删除信息、不可以编辑。...、可以做为编辑器使用,由于时间原因并没有深入体会、感兴趣的小伙伴可以看一下以下内容 contenteditable-MDN contenteditable实现编辑器,光标、输入法处理 基于contenteditable...$refs.editor)“ 使用ref的方式而不是ID的方式呢? 使用ref的好处是具有良好的可重用性和范围。因为ref只留在这个组件,所以当您操作这个ref时,它不会干扰其他组件。...获取光标的坐标文本位置 caret-pos 从 textarea、contentedtiable 或 iframe 正文中获取插入符号/光标位置/偏移量 import { position, offset...这个功能只是开发挤出来的、很多东西写的不够好、不够完善,希望本文能帮助您在开发节约一点时间。也欢迎大家提出踊跃的反馈、希望能与大家共进步,加油~

2.4K20

富文本编辑器开发简介

* 因为浏览器兼容性问题,第二个参数要为false,firefox该参数为true时抛出错误。...rangeCount:选区包含的DOM范围的数量 方法 addRange(range):指定的DOM范围添加到选区 collapse(node,offset):选区折叠到指定节点中的相应的文本偏移位置...collapseToEnd():选区折叠到终点位置 collapseToStart():选区折叠到起点位置 containsNode(node):确定指定的节点是否包含在选区 deleteFromDocument...anchorOffset:“起点”anchorNode的偏移量。 focusNode:返回包含“结束点”的节点。 focusOffset:“结束点”focusNode的偏移量。...表单提交 富文本编辑不是使用表单控件实现的,而需要手工来提取并提交HTML。为此,通常可以添加一个隐藏的表单字段,就是提交表单之前提取出HTML,并将其插入到隐藏的字段

4.1K20

前端富文本基础及实现

前端富文本基础及实现 https://www.zoo.team/article/rich-text 前言 日常生活我们会经常接触到各种各样的文档格式和形式,其中富文本文档格式扮演了重要角色。...文档变成可编辑后,就可以像使用文字处理程序一样编辑文本。 效果如图: 元素设置 contenteditable 第二种方式是使用 contenteditable 属性指定 HTML 文档的元素。...使用方式是一个元素上添加 contenteditable 属性并设置为 true,然后该元素会立即被用户编辑。...光标示例(起始位置是同一个位置的选区) 如图:anchorNode 与 focusNode 为同一节点 ("ZOO" 文本节点),anchorOffset 与 focusOffset 指向节点同一处,通过此信息可得到光标位置...标签,如 insertImage 光标位置插入图片 图片的 URL 链接 insertParagraph 光标位置插入元素 null italic 切换选中文本的斜体样式 null styleWithCSS

4.2K50

初探富文本之富文本概述

演进之路 Web富文本编辑器也是不断演进,整个发展的过程,也是遇到了不少困难,而正是因为这些问题,可以发展历程分为L0、L1、L2三个阶段的发展历程。...data:text/html, 做过文本复制功能的同学应该比较熟悉document.execCommand("copy")这个命令,...来实现加粗还是来实现加粗,而且还有浏览器的兼容性问题,例如在IE浏览器使用来实现加粗,Chrome使用<...如果有用过CodeMirror5的用户可能会注意到,默认配置下的CodeMirror,除了排版的能力不是完全自行实现的,其他的方面都有自己的一套实现方案,例如光标是通过div来模拟定位的、输入是通过一个跟随光标移动的...当一个Range的起始处和结尾处是同一个位置时,该Range就处于Collapsed状态,也就是我们常见的光标状态。

1.7K10

实现一个简单的编辑器

接管所有事件,有自己的排版引擎 Google Docs 光标 kix-cursor-caret 输入 docs-texteventtarget-iframe contenteditable 金山文档 光标...什么是 contenteditable HTMLcontenteditable 的属性可以打开某些元素的可编辑状态.也许你没用过 contenteditable 属性.甚至从未听说过. contenteditable...我们最常用的输入文本内容便是 inpu t与t extarea ,使用 contenteditable 属性后,可以 div , table , p , span , body ,等等很多元素输入内容...即通过 contenteditable 可以让普通的元素实现可编辑状态。 2. 什么是 Selection Selection 对象表示用户选择的文本范围或插入符号的当前位置。...脱离execCommand实现编辑器 execCommand 只在编辑器渲染,完全可以通过使用 dom 的 api 来实现渲染功能。

1K20
领券