富文本选区

在富文本编辑器中使用 iframe 的 getSelection() 方法可以获取选中的文本

该方法是 window 对象和 document 对象的属性,调用后会返回一个当前选选择文本的 Selection 对象

selection 对象拥有下列属性:

  • anchorNode: 选区起点所在节点
  • anchorOffset:选区起点在其所在节点中的偏移量
  • focusNode:选区终点所在节点
  • focusOffest:选区终点在其所在节点中的偏移量
  • isCollapsed:布尔值,表示选区的起点终点是否重合
  • rangeCount:选区包含DOM节点的数量

拥有下列方法:

  • addRange(range):将指定范围内的内容添加到选区
  • collapse(node,offset):将选区折叠到指定节点的指定偏移处
  • collapseToEnd():将选区折叠到选区终点的位置
  • collapseToStart():将选区折叠到起点位置
  • containsNode(node):确定指定节点是否包含在选区之内
  • deleteFromDocument():从文档中删除选区中的文本
  • extend(node,offset):将 focusNode 和 focusOffset 移动到指定位置来拓展选区
  • getRangeAt(index): 返回所应对应选区中的DOM范围
  • removeAllRanges():从选区中移除所有的DOM范围,该方法也会移除选区,因为选区中至少要有一个范围
  • removeRange(range): 从选区中移除指定范围
  • selectAllChildren(node):清除选区并选择指定节点的所有子节点
  • toString():返回选区包含的指定文本

关于范围的内容在之前的文章中有所叙述

以下方代码为例:

let selection = frames["richedit"].getSelection();

// 取得选择的文本
let selectedText = selection.toString(); // 取得选区范围
let range = selection.getRangeAt(0); // 突出显示选择的文本
let span = frames["richedit"].document.createElement('span');
span.style.backgroundColor = "yellow";
range.surroundContents(span);

上方代码会为富文本编辑器中选中的文本添加黄色背景

表单与富文本

由于富文本编辑器不是使用表单控件实现的,因此从技术上来说富文本编辑器并不属于表单的一部分

所以我们在提交表单时富文本编辑器内的内容并不会随着一起提交,所以我们需要手工提取并提交富文本编辑器中的内容

如下所示:

let form = document.forms[0];

form.onsubmit = function(event){
let target = event.target; target.elements["comments"].value = document.getElementById("richedit").innerHtml; }

Javascript高级编程学习笔记(83)—— 富文本选区(3)的更多相关文章

  1. Javascript高级编程学习笔记(82)—— 富文本操作(2)

    操作富文本 与富文本编辑器的交互的主要方式就是使用 document.execCommand() 方法 该方法可以对文档执行自定义命令,并且可以应用大多数格式 该方法接收三个参数: 要执行命令的名称 ...

  2. Javascript高级编程学习笔记(81)—— 富文本(1)

    富文本编辑 富文本编辑又称为: WYSIWYG(What You See Is What You Get,所见即所得) 常用于博客等用途,虽然没有规范,但是在IE最先引入后其他的浏览器厂商也相继完成了 ...

  3. Javascript高级编程学习笔记(88)—— Canvas(5)绘制文本

    绘制文本 同样的,canvas也为绘制文本提供了相应的方法. 2D上下文提供的文本绘制方法主要有两个: fillText() strokeText() 这两个方法都接受四个参数 要绘制的文本字符串 绘 ...

  4. Javascript高级编程学习笔记(76)—— 表单(4)选择文本

    文本框脚本 在HTML中文本框有两种实现方式: <input> <textarea> 这两种实现方式虽然在多数情况下表现一致,但是两者之间仍存在许多重要区别 对于<inp ...

  5. Javascript高级编程学习笔记(64)—— 事件(8)键盘与文本事件

    键盘与文本事件 用户在使用键盘时会触发键盘事件 “DOM2级事件”最初规定了键盘事件,但是最后在定稿时又删除了相应内容 所以键盘事件被放入了DOM3级事件的规范中 总的来说有三个键盘事件: keydo ...

  6. Javascript高级编程学习笔记(53)—— DOM2和DOM3(5)遍历

    遍历 “DOM2级遍历和范围” 定义了两个用于辅助完成顺序遍历的DOM结构类型 NodeIterator 和 TreeWalk 上述两种类型可以基于给定起点的DOM结构执行深度优先的遍历操作 对于检测 ...

  7. Javascript高级编程学习笔记(37)—— DOM(3)Element

    Element类型 除了Document类型之外,Element类型应该就是web编程中最常用的类型了 Element类型主要用于表现XML.HTML元素,提供对元素标签名.子节点以及特性的访问 特性 ...

  8. Javascript高级编程学习笔记(35)—— DOM(1)节点

    DOM JS由三部分组成 1.BOM 2.DOM 3.ECMAScript ES和BOM在前面的文章已经介绍过了 今天开始JS组成的最后一部分DOM(文档对象模型) 我们知道,JS中的这三个部分实际上 ...

  9. Javascript高级编程学习笔记(15)—— 引用类型(4)RegExp类型

    JS中处理字符串最常用的应该就是正则了 同样正则(RegExp)类型也是JS中引用类型的一种 ECMAScript通过 RegExp类型 来支持正则表达式 创建正则 var expression = ...

随机推荐

  1. vue 树形下拉框 亲测 好用

    https://vue-treeselect.js.org/ 顺带说一个开发中使用这个组件遇到的问题,关于回显之后无法修改的问题  找了很长时间 原因是数据类型导致的问题,数组里面应该是数字类型,直接 ...

  2. QTcpSocket 相关知识总结

    1.  连接服务器 m_tcpSocket->connectToHost("127.0.0.1", 9877); connected = m_tcpSocket->wa ...

  3. [JavaScript] 弹出编辑框

    效果:单击图片copy,双击图片或者点Edit都会打开编辑窗口 Style <style> .black_overlay{ display: none; position: absolut ...

  4. java上传文件常见几种方式

    1.ServletFileUpload 表单提交中当提交数据类型是multipare/form-data类型的时候,如果我们用servlet去做处理的话,该http请求就会被servlet容器,包装成 ...

  5. H5采集pcm流转换采样率实时发送到服务端

    function startTalk(ws2, button) { var arrBuffer = new ArrayBuffer(320 * 2); var sendBuffer = new Dat ...

  6. Codeforces 1065 简要题解

    文章目录 A题 B题 C题 D题 E题 F题 G题 传送门 GGG题略难,膜了一波zhouyuyang{\color{red} zhouyuyang}zhouyuyang巨佬的代码. 其余都挺清真的. ...

  7. loadrunner整体压测执行操作步骤

    lr11安装包链接:https://pan.baidu.com/s/1hF3j2Vi_xB8BhT70P1ZdBg 提取码:n3zn lr12安装包链接:https://pan.baidu.com/s ...

  8. C#实现简单的RPC

    demo地址:https://pan.baidu.com/s/1PeTdV2V9DF87jZTHdz4CyA 提取码:n2qm 参考地址:https://github.com/neuecc/Magic ...

  9. php final

    final:如果父类中的方法被声明为final,则子类无法覆盖该方法.如果一个类被声明为final,则不能被继承. 方法示例: <?phpclass BaseClass {   public f ...

  10. 修改云主机windows密码不生效

    Step1:使用文本工具打开插件路径: 路径为:C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages ...