首页 > 其他分享 >有了解过`getSelection`API吗?怎么使用,有哪些场景?

有了解过`getSelection`API吗?怎么使用,有哪些场景?

时间:2024-12-02 09:10:54浏览次数:8  
标签:selection 场景 const getSelection range API 选中 文本

getSelection() API 是一个用于获取用户在网页上选择的文本的 JavaScript API。它返回一个 Selection 对象,该对象包含有关所选文本的信息,例如所选文本的内容、起始位置和结束位置等。

使用方法:

const selection = window.getSelection();

if (selection.rangeCount > 0) { // 检查是否有选中的内容
  const selectedText = selection.toString(); // 获取选中的文本
  const range = selection.getRangeAt(0); // 获取选中区域的范围 (Range 对象)

  // Range 对象可以用来获取更多信息,例如:
  const startNode = range.startContainer; // 选区开始的节点
  const startOffset = range.startOffset; // 选区开始的偏移量
  const endNode = range.endContainer;   // 选区结束的节点
  const endOffset = range.endOffset;   // 选区结束的偏移量

  // 你还可以操作选区,例如:
  range.deleteContents(); // 删除选中的内容
  range.insertNode(document.createTextNode("新文本")); // 插入新的节点
  selection.removeAllRanges(); // 清除选区
  selection.addRange(range); // 重新设置选区
} else {
  // 没有选中的内容
}

使用场景:

  • 复制粘贴功能: 浏览器内置的复制粘贴功能就是基于 getSelection() API 实现的。
  • 富文本编辑器: 富文本编辑器需要获取用户选中的文本,以便进行加粗、斜体、添加链接等操作。
  • 文本分析工具: 例如,提取用户选择的文本进行情感分析、关键词提取等。
  • 自定义上下文菜单: 根据用户选择的文本,显示不同的上下文菜单选项。例如,选中一段文本后,可以出现“翻译”、“搜索”等选项。
  • 拼写检查和语法检查: 获取用户选中的文本进行拼写和语法检查。
  • 辅助阅读功能: 例如,高亮用户选中的文本,或者朗读用户选中的文本。
  • 获取用户反馈: 例如,用户可以选择网页上的文本并提交反馈,指出错误或提出建议。

示例:获取选中文本并显示在弹窗中

<!DOCTYPE html>
<html>
<head>
<title>getSelection() 示例</title>
</head>
<body>

<p>这是一段示例文本,请选中一部分。</p>

<button onclick="showSelectedText()">显示选中文本</button>

<script>
function showSelectedText() {
  const selection = window.getSelection();
  const selectedText = selection.toString();
  if (selectedText) {
    alert("你选中的文本是:" + selectedText);
  } else {
    alert("你没有选中任何文本。");
  }
}
</script>

</body>
</html>

需要注意的点:

  • getSelection() 返回的是一个实时的 Selection 对象,这意味着如果你修改了 DOM,Selection 对象也会随之改变。
  • 在 iframe 中使用 getSelection() 需要注意上下文,需要使用 iframe.contentWindow.getSelection() 获取 iframe 中的 Selection 对象。

希望这些信息能帮助你理解和使用 getSelection() API。

标签:selection,场景,const,getSelection,range,API,选中,文本
From: https://www.cnblogs.com/ai888/p/18580888

相关文章

  • Esbuild代码调用深度解析:Build API与Transform API的奥秘 (3)
    esbuild提供了丰富的API,允许你在Node.js代码中进行项目打包和代码转换。以下是esbuild的主要API和一些示例用法。项目打包——BuildAPIesbuild的BuildAPI主要用于项目打包,提供了build、buildSync和context三个方法。1.基本配置在项目根目录下创建esb......
  • 京东面试:聊聊Spring事务?Spring事务的10种失效场景?加入型传播和嵌套型传播有什么区别?
    本文原文链接文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录博客园版为您奉上珍贵的学习资源:免费赠送:《尼恩Java面试宝典》持续更新+史上最全+面试必备2000页+面试必备+大厂必备+涨薪必备免费赠送:《尼恩技术圣经+高并发系列PDF》,帮你实现技术自由,完......
  • Web API基本认知
    作用和分类作用:就是使用JS去操作html和浏览器分类:DOM(文档对象模型)、BOM(浏览器对象模型)什么是DOMDOM(DocumentObjectModel——文档对象模型)是用来呈现以及与任意HTML或XML文档交互的API白话文:DOM是浏览器提供的一套专门用来操作网页内容的功能DOM作用开发......
  • [Design Pattern] Encapsulate a network request lib - 4. API Template
    Whencompany'sAPIbecomehugeandalwayschanging,if request-busismaintainedbydevelopersmanually,it'snotonlytimeconsumingbutalsoerrorprone.Wecanintroducesomestandardautomationprocesstoresolvetheproblem. Examples:{......
  • JavaAPI高级编程.集合框架
    集合框架1.集合框架的概念(1)集合框架实际上就是一个动态数组,与一般的对象数组不同,集合对象的内容可以任意扩充。(2)集合框架中的特征A.这种框架是高性能的B.框架必需允许不同的类型的类集以相同的方式和高度互操作方式工作C.类集必须是任意扩展和修改的集合框架常用接口(表......
  • 前端API自动化构建工具:讲述 FlyHttp 设计思想
    上篇文章:FlyHttp的诞生:从认识各种网络请求开始,本篇文章正式开始FlyHttp构建工具的设计,接下来让我们开始吧!讲述FlyHttp设计思想以Vue.js框架为例子,我们简单看一下,在进行项目开发中,使用axios在前端进行网络请求,我们需要进行哪些步骤?1.传统的开发流程1.1封装axios......
  • 开源低代码平台-Microi吾码-接口引擎实战:微信v3支付JSAPI下单
    Microi吾码-接口引擎实战:微信v3支付JSAPI下单简介预览图业务逻辑接口引擎代码Microi吾码-系列文档接口引擎实战-系列文档简介接口引擎与第三方平台对接无所不能,下一篇介绍对接微信支付回调(含签名验证)预览图业务逻辑参考微信支付官方文档:https://pay.weixin.qq......
  • 申请量化API接口的步骤有哪些?
    炒股自动化:申请官方API接口,散户也可以python炒股自动化(0),申请券商API接口python炒股自动化(1),量化交易接口区别Python炒股自动化(2):获取股票实时数据和历史数据Python炒股自动化(3):分析取回的实时数据和历史数据Python炒股自动化(4):通过接口向交易所发送订单Python炒股自动化(5):......
  • C# + html + fetch + API + javascript
    本随笔,在html利用fetch去callwebapi对数据进行添加,修改,更新和删除。数据库与存储过程,此处略过...创建entity,方便webapi进行互动。 现在可以写WebAPI,html实现添加数据, jsfile, 上面添加的数据,将以下面的数据列呈现,  Insus.NET只是在html静态写了数据的表......
  • js的sort方法运用场景有哪些?
    JavaScript的sort()方法主要用于对数组的元素进行排序。它有很多应用场景,在前端开发中尤为常见:1.列表排序:这是最常见的应用场景。当需要按照字母顺序、数字大小、日期先后等对列表项进行排序展示时,sort()方法是必不可少的。例如,电商网站上的商品列表,可以根据价格、销......