javascript基础从小白到高手系列四百七十九:富文件选择

在内嵌窗格中使用getSelection()方法,可以获得富文本编辑器的选区。这个方法暴露在
document 和window 对象上,返回表示当前选中文本的Selection 对象。每个Selection 对象都拥
有以下属性。
 anchorNode:选区开始的节点。
 anchorOffset:在anchorNode 中,从开头到选区开始跳过的字符数。
 focusNode:选区结束的节点。
 focusOffset:focusNode 中包含在选区内的字符数。
 isCollapsed:布尔值,表示选区起点和终点是否在同一个地方。
 rangeCount:选区中包含的DOM 范围数量。
Selection 的属性并没有包含很多有用的信息。好在它的以下方法提供了更多信息,并允许操作
选区。
 addRange(range):把给定的DOM 范围添加到选区。
 collapse(node, offset):将选区折叠到给定节点中给定的文本偏移处。
 collapseToEnd():将选区折叠到终点。
 collapseToStart():将选区折叠到起点。
 containsNode(node):确定给定节点是否包含在选区中。
 deleteFromDocument():从文档中删除选区文本。与执行execCommand(“delete”, false,
null)命令结果相同。
 extend(node, offset):通过将focusNode 和focusOffset 移动到指定值来扩展选区。
 getRangeAt(index):返回选区中指定索引处的DOM范围。
 removeAllRanges():从选区中移除所有DOM 范围。这实际上会移除选区,因为选区中至少
要包含一个范围。
 removeRange(range):从选区中移除指定的DOM 范围。
 selectAllChildren(node):清除选区并选择给定节点的所有子节点。
 toString():返回选区中的文本内容。
Selection 对象的这个方法极其强大,充分利用了DOM 范围来管理选区。操纵DOM范围可以实
现比execCommand()更细粒度的控制,因为可以直接对选中文本的DOM 内容进行操作。来看下面的
例子:
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);
以上代码会在富文本编辑器中给选中文本添加黄色高亮背景。实现方式是在默认选区使用DOM范
围,用surroundContents()方法给选中文本添加背景为黄色的标签。
getSelection()方法在HTML5 中进行了标准化,IE9 以及Firefox、Safari、Chrome 和Opera 的所
有现代版本中都实现了这个方法。
IE8 及更早版本不支持DOM 范围,不过它们允许通过专有的selection 对象操作选中的文本。如
本章前面所讨论的,这个selection 对象是document 的属性。要取得富文本编辑器中选中的文本,
必须先创建一个文本范围,然后再访问其text 属性:
let range = frames[“richedit”].document.selection.createRange();
let selectedText = range.text;
使用IE 文本范围执行HTML 操作不像使用DOM 范围那么可靠,不过也是可以做到的。要实现与
使用DOM 范围一样的高亮效果,可以组合使用htmlText 属性和pasteHTML()方法:
let range = frames[“richedit”].document.selection.createRange();
range.pasteHTML(
‘${range.htmlText}’);
以上代码使用htmlText 取得了当前选区的HTML,然后用一个标签将其包围起来并通过
pasteHTML()再把它插入选区中。

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: HTML DOM,即HTML文档对象模型,是一种用于访问和操作HTML文档中元素的标准方法。在JavaScript中,可以使用DOM来查找、修改、添加和删除HTML元素。在本教程中,我们将学习如何使用DOM来操作HTML文档的元素。 ### 回答2: JavaScript学习手册十四:HTML DOM——文档元素的操作(二)介绍了文档元素的一些高级操作,包括插入和删除节点、替换节点、复制节点等。下面我将详细介绍这些操作的用法和注意事项。 首先是插入节点,包括appendChild()和insertBefore()方法。appendChild()方法可以将一个节点追加到某个元素的子节点列表的末尾,而insertBefore()方法可将一个节点插入到元素的指定位置。这两个方法都可以接收字符串、元素、文本节点等参数,可以将它们转换为节点后插入。需要注意的是,插入节点后必须重新获取元素才能正确地操作修改后的DOM树。 接下来是删除节点,包括removeChild()和replaceChild()方法。removeChild()方法可以移除指定节点,replaceChild()方法则可将指定节点替换为另一个节点。调用这两个方法也需要重新获取元素。 另外,还有cloneNode()和hasChildNodes()方法。cloneNode()方法可以复制一个节点,包括节点的属性、事件、插入的子节点等,但不包括子节点的引用和事件处理程序。hasChildNodes()方法可判断节点是否包含子节点。 需要注意的是,在使用这些高级DOM操作时,应尽可能减少DOM的操作次数。因为频繁操作DOM可能会导致性能问题,因此应该尽可能缓存和重用DOM元素,同时避免频繁更新DOM。此外,在修改DOM树时,应当小心操作,避免影响网页布局和用户体验。 总之,JavaScript学习手册十四:HTML DOM——文档元素的操作(二)提供了一些高级操作DOM树的方法,可以方便地插入、删除、替换和复制节点。合理地使用这些方法,可以为网页的构建、交互和流畅度提供帮助。 ### 回答3: HTML DOM是JavaScript操作HTML和XML的接口,它将HTML和XML文档表示为具有层次结构的节点树,通过对节点树进行操作,可以实现对文档元素的增删改查。之前我们已经学习了文档元素的遍历和属性的操作,本篇文章将进一步介绍如何对文档元素进行插入、替换和移除操作。 文档元素的插入操作,可以通过createElement()方法创建一个元素节点,然后通过appendChild()将该节点插入到指定的父节点下。还可以使用insertBefore()方法在指定位置插入节点,该方法需要指定要插入的节点和插入位置的参考节点。同时还可以使用insertAdjacentHTML()方法直接插入HTML代码并将其转换为节点。 文档元素的替换操作,可以通过replaceChild()方法实现,该方法需要指定要替换的节点和替换后的新节点。替换操作可以用于更新页面中的元素,比如将旧的图片替换成新的图片等。 文档元素的移除操作,可以通过removeChild()方法实现,该方法需要指定要移除的节点,并将其从父元素节点中删除。还可以使用remove()方法直接将元素节点从页面中删除。 在进行文档元素操作时,需要注意避免对页面结构造成破坏,比如插入重复的元素或删除父元素节点等操作。另外,DOM操作可能会影响页面的性能,因此在实际应用中需要谨慎处理。 总的来说,HTML DOM提供了丰的接口,可以实现对文档元素的灵活操作,帮助我们更好地控制和管理页面内容。对于Web前端开发者而言,熟练掌握HTML DOM操作技巧是非常重要的一项技能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值