富文本批注前端技术方案

批注这个功能大家在Word中应该比较常见,目前web对富文本批注做的比较好的貌似可能就是石墨文档了

需求大致就是 用户可以对富文本内容随意选中呼出一些操作按钮 例如高亮,批注等 然后对选中内容进行批注 例如

有些和划词翻译 选中内容分享比较类似

开始我以为是按照这个方案进行编码实现,如果以这种方式处理 主要有两个关键点需要注意 1、选中区的结构文字怎么读取 2、鼠标按键抬起时,拿到鼠标的位置信息

问题一 大致可以这么处理

  let txt = ‘'; 

  if(document.selection) {
    // IE
    txt = document.selection.createRange().text;
  } else {
    range = document.getSelection();
    txt = range.toString();
  }
复制代码

问题二 通过mouseup可以拿到具体信息

经过实践,发现有很多问题 富文本打上标记有可能目标文字定位错误 多行文本很难打标记 最后还是放弃了这个方案

思考了一番 如果这块如果做好底层必须实现编辑器基本核心功能 selection和rang 然后看了下quill editor 和 ueditor对着这两块的处理 后面发现quill比较适合现代编辑器着重看了些核心模块

经过一天多的查看quill源码,整理出了思路, 实现一个编辑器时间不允许 把核心模块中selection和rang直接搬过来 时间和引出的问题也是比较紧张的,所以决定基于quill核心模块刨除UI相关 实现一个自定义的编辑器 然后自己只是开发两个自定义的format处理选中区域

经过测试验证还算编辑完美实现了这个需求 感觉石墨文档也是按照这个思路实现自定义的一些需求的 过程中也遇到了不少细节问题 还好经验思路是个好东西。 还有就是quill editor确实是一个比较现代的编辑器,实现的也比较完美。以后再做各个编辑器选择,一定要看下quill的源码 或许你就有目标了

Element UI 是一个基于 Vue.js 的开源 UI 组件库,提供了丰富的预构建组件以简化前端开发。在 Element UI 中,可以使用 `el-input` 组件结合第三方库(如 Quill 或者 tinyMCE)来实现富文本编辑器,并扩展其批注功能。 1. **基本实现**: 首先,引入 Element UI 的 `el-input` 组件,并利用 `Vue-Quill-Editor` 或者 `vue-tinymce` 这样的富文本编辑器插件。安装并配置好所需的库: ```bash npm install vue-quill-editor --save ``` 在 HTML 中添加一个编辑区域,并绑定到一个 Vue 实例的数据属性: ```html <el-input v-model="editorValue" type="textarea" placeholder="输入内容"></el-input> ``` 在 Vue 中实例化编辑器: ```js import { createQuillEditor } from 'vue-quill-editor'; export default { components: { 'quill-editor': createQuillEditor() }, data() { return { editorValue: '', }; }, }; ``` 2. **批注功能**: 要添加批注功能,可以在富文本编辑器中集成一个弹出层或浮动工具栏,用户可以在其中输入评论并将其附加到特定位置的文本上。这可能涉及到监听文本选择事件(`@select`),然后显示插入批注的选项。 ```js methods: { insertAnnotation(e) { const { start, end } = e.range; // 在此处创建一个弹出层,获取用户输入的批注内容 const annotation = prompt('请输入批注内容'); // 将批注插入到富文本的相应位置 this.editorValue.insertText(start, `<!-- ${annotation} -->`); }, }, ``` 3. **相关问题--:** - 如何在 Element UI 中集成第三方富文本编辑器? - 如何在 Vue 中处理富文本编辑器的文本选择事件? - 如何确保批注与被选中的文本内容关联?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值