在 JavaScript 中获取选中或突出显示的文本

news2024/11/18 2:52:56

本文将展示我们如何使用 DOM API 来让用户在屏幕上突出显示或选择文本。 DOM API 为我们提供了 getSelection() 方法,该方法允许我们获取用户选择的文本。

窗口对象可以直接访问这个方法。 让我们看看如何实际实现此功能。


使用 JavaScript 中的 window.getSelection() 方法从网页中获取选中或突出显示的文本

JavaScript 中的 window.getSelection() 方法允许我们获取用户在屏幕上突出显示或选择的文本。 此方法返回一个对象,该对象包含与屏幕上突出显示的文本相关的信息。

在本教程中,我们将首先使用 body HTML 标记内的一些随机词的 <p> HTML 标记创建一个段落。

我们将在此段落标记上调用一个名为 getSelectedText() 的方法,该方法将在用户离开鼠标时调用,即,当触发 onmouseup 事件时。 我们将在 <script> 标记内声明此方法。

然后,我们创建了一个 div HTML 元素,其中包含一些文本,在关闭 div 标签之前,我们还添加了一个 span 标签。 我们的目标是在 span 标签内显示用户突出显示的段落中的文本。

HTML代码片段:

<body>
    <p onmouseup="getSelectedText();">
      Lorem, ipsum dolor sit amet consectetur adipisicing elit. Natus eum
      consectetur nam quisquam voluptates quis quibusdam consequuntur, eos ab
      magnam ducimus animi iusto soluta veniam doloremque a vel vero corrupti
      repellendus at. Debitis necessitatibus quos illum deserunt exercitationem
      suscipit autem excepturi aliquid accusamus cumque sapiente dicta
      consequuntur delectus, fuga itaque!
    </p>

    <div>The selected text is: <span id="showText"></span></div>
</body>

现在我们已经创建了 HTML 结构,我们还可以使用其 id showText 为我们的 div 元素和 span 标签提供一些样式。 用户将突出显示或选择的任何文本都将以红色显示。

CSS代码片段:

div {
    font-size: 1.5em;
    margin-top: 2em;
}

#showText {
    color: red;
}

现在我们已经完成了 HTML 和 CSS 文件的处理,是时候处理 JavaScript 代码了。

由于我们希望所选文本显示在 span 标记内,因此我们将使用 document.getElementById() 方法在 JavaScript 中访问 span 元素。 然后我们将其引用存储在 showText 变量中。

我们将声明 getSelectedText() 函数,负责获取用户选择的文本。 在这个函数中,我们将创建一个名为 selectedText 的变量,该变量将被初始化为一个空字符串。

我们暂时使用这个变量来存储用户选择的字符串或文本。

在这一点上,我们还将 showText,即我们的 span 标签的内容,设为空。 这是因为无论用户之前选择了什么内容,我们首先要清除它,然后再显示用户当前选择的新文本。

在此阶段,我们将首先检查浏览器窗口是否可以访问 getSelection()。 所有现代浏览器(如 Chrome 和 Firefox)都可以访问此方法。

然后我们使用 window.getSelection() 方法,这将帮助我们获取用户选择的文本。

JavaScript 代码片段:

let showText = document.getElementById("showText");

function getSelectedText() {
    var selectedText = "";
    showText.innerHTML = "";

    if (window.getSelection) {
    selectedText = window.getSelection().toString();
    showText.innerHTML = selectedText;
    }
}

window.getSelection() 方法返回一个 Selection 对象,它表示用户选择的文本范围。

由于我们需要实际文本而不是对象,我们必须使用 toString() 方法将该对象转换为字符串,然后将用户选择的文本存储在 selectedText 变量中。

如果您将 window.getSelection() 方法返回的对象传递给某些其他方法,例如 window.alert()document.write(),那么您不必对该对象调用 toString() 方法 .

这是因为 window.alert()document.write() 会自动对该对象调用 toString() 并将该对象转换为文本格式。

现在我们在 selectedText 变量中有了用户在屏幕上选择的实际文本,然后我们可以使用其 innerHTML 属性将其分配给 span 标记,如 showText.innerHTML。

输出:

获取选定的文本 JavaScript

运行上述代码后,程序的输出将如下所示。 使用 window.getSelection() 方法,您不仅可以从段落标签中获取选定的文本,还可以将此方法与标题、div 等其他标签一起使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/705522.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vscode快速对比两个文件的不同部分

文件对比第一种方法&#xff1a; 打开vscode&#xff0c;打开文件或者文件夹 选中需要对比的文件 按住ctrl选择要对比的另一个文件&#xff0c;鼠标右键选择将已选项进行比较 结果如下&#xff1a; 文件对比第二种方法&#xff1a; 打开文件&#xff0c;点击鼠标右键 命…

牛客网论坛考研计算机组成原理笔记,GitHub已下载量已过百万

**前言&#xff1a;**看过很多书&#xff0c;但总是忘得很快。知识广度越大越容易接纳新东西&#xff0c;但从考察角度来说&#xff0c;自然是对某个方面了解越深越好。那些大而全的著作虽然每本都是经典中的经典&#xff0c;但实际工作中可能只用到其中的一小部分。我现在越发…

机器学习13: 使用 TensorFlow 进行二元分类(Binary Classification)编程实践

在【机器学习6】和【机器学习9】中&#xff0c;我们使用 TensorFlow 进行了“线性回归模型”和“组合特征”编程实践。本质上&#xff0c;其中采用的都是回归模型&#xff0c;也就是说&#xff0c;我们创建了产生浮点预测的模型&#xff0c;比如“这个社区的房子要花 N 千美元。…

基于matlab深度学习的多光谱图像语义分割(附源码)

一、前言 此示例演示如何使用 U-Net 对具有七个通道的多光谱图像执行语义分割。 语义分割涉及用类标记图像中的每个像素。语义分割的一个应用是跟踪森林砍伐&#xff0c;即森林覆盖率随时间的变化。环境机构跟踪森林砍伐&#xff0c;以评估和量化一个地区的环境和生态健康状况…

Flink消费kafka出现空指针异常

文章目录 出现场景&#xff1a;表现&#xff1a;问题&#xff1a;解决&#xff1a; tombstone : Kafka中提供了一个墓碑消息&#xff08;tombstone&#xff09;的概念&#xff0c;如果一条消息的key不为null&#xff0c;但是其value为null&#xff0c;那么此消息就是墓碑消息. …

echarts tooltip自定义线条样式及数据提示框内容

option {......tooltip: {trigger: axis,borderWidth: 0, // 去除数据提示框默认的边框axisPointer: {lineStyle: { // 设置hover时竖线样式color: {type: linear,x: 0,y: 0,x2: 0,y2: 1,colorStops: [{offset: 0,color: rgba(128,200,244,0) // 0% 处的颜色},{offset: 1,colo…

【40000字】!最适合新手的Springboot+Vue项目

更多文章&#xff1a;https://mp.weixin.qq.com/mp/appmsgalbum?__bizMzg2NDY3NjY5NA&actiongetalbum&album_id2053253027934863360#wechat_redirect hello我是索奇&#xff0c;本套项目对应bilibili视频&#xff0c;大家可以结合视频看哈&#xff0c;有些基础的只看…

2022年系统架构师论文(回忆版)

2022年11月6日&#xff0c;全国计算机等级下半年考试&#xff0c;在疫情压力下如期举行。 北京市软件架构师考试地点在北京市工贸技师学院&#xff08;机电分院&#xff09;&#xff0c;地址&#xff1a;海淀区北四环北路132号&#xff08;金泰海博大酒店北侧&#xff09; 查看…

网络安全(黑客)自学笔记

建议一&#xff1a;黑客七个等级 黑客&#xff0c;对很多人来说充满诱惑力。很多人可以发现这门领域如同任何一门领域&#xff0c;越深入越敬畏&#xff0c;知识如海洋&#xff0c;黑客也存在一些等级&#xff0c;参考知道创宇 CEO ic&#xff08;世界顶级黑客团队 0x557 成员…

chatgpt赋能python:吐血推荐的Python编程好玩的代码

吐血推荐的Python编程好玩的代码 近年来&#xff0c;Python 成为了全球最受欢迎的编程语言之一。Python 的简洁明了&#xff0c;易学易用&#xff0c;使得越来越多的开发者选择了 Python。Python 的生态系统非常丰富&#xff0c;有很多丰富有趣的库和代码可以供我们玩耍。在本…

使用MySQL根据原型字段创建表结构

⭐️ 不爱生姜不吃醋&#xff0c;原创不易&#xff0c;转载请注明原链接 ❗️ 注&#xff1a;本文写的是基于MySQL对数据库表结构进行的操作(DDL) 文章目录 一、数据库1.基本概念2.关系型数据库&#xff08;RDBMS&#xff09;3.数据模型4.SQL通用语法5.SQL分类 二.创建表结构1.…

关于nlohmann::json的简单使用

nlohmann::json的使用非常简单&#xff0c;只需要包含.hpp文件即可&#xff0c;这是它的官网https://github.com/nlohmann/json 简单使用&#xff1a; #include "json.hpp" #include <iostream>using Info nlohmann::json;int main() {Info info;std::cout &…

Java面试Day11

1. MySQL 事务有哪些隔离级别、分别有什么特点&#xff0c;以及 MySQL 的默认隔离级别是什么&#xff1f; 在MySQL中事务的隔离级别是为了解决常见的并发问题&#xff0c;在保证数据库性能的同时保持事务的隔离性&#xff0c;常见的并发问题有&#xff1a; 脏读&#xff1a;如果…

利用nginx/apache代理wss 实现 小程序 端口 反向代理

除了用Workerman自身的SSL&#xff0c;也可以利用nginx/apache作为wss代理转发给workerman 我就是栽在这大坑里&#xff08;nginx/apache代理wss&#xff0c;workerman部分就不要设置ssl&#xff0c;否则将无法连接&#xff0c;两个方法2选1&#xff09;官方推荐用nginx/apach…

基于matlab基于预训练的膨胀双流卷积神经网络的视频分类器执行活动识别(附源码)

一、前言 此示例首先展示了如何使用基于预训练的膨胀 3-D &#xff08;I3D&#xff09; 双流卷积神经网络的视频分类器执行活动识别&#xff0c;然后展示了如何使用迁移学习来训练此类视频分类器使用 RGB 和来自视频的光流数据 [1]。 基于视觉的活动识别涉及使用一组视频帧预…

数据结构07:查找[C++][红黑二叉排序树RBT]

图源&#xff1a;文心一言 | 提词&#xff1a;动漫风格 红黑树 少女#创意图# 考研笔记整理1.7w字&#xff0c;但是删除操作的代码是有一点问题的{无法正确处理红色结点的删除}&#xff0c;其它功能可正常使用&#xff0c;请小伙伴注意~~&#x1f95d;&#x1f95d; 第1版&…

【线程池】线程池的ctl属性详解

目录 一、ctl介绍 二、线程池ctl源码 三、线程池ctl分析 1、private static int ctlOf(int rs, int wc) { return rs | wc; } 2、private final AtomicInteger ctl new AtomicInteger(ctlOf(RUNNING, 0)); 3、private static int runStateOf(int c) { return c &am…

TensorFlow框架

TensorFlow框架 本文目录&#xff1a; 一、通过代码了解TensorFlow结构 1.1、TensorFlow实现一个加法运算代码 1.1.1、原生python加法运算 1.1.2、TensorFlow实现加法运算 1.1.3、TensorFlow实现加法运算 1.2、TensorFlow的Hello World 二、TensorFlow架构图 三、Tenso…

WebRTC Docker容器部署方案

文章目录 WebRTC简介WebRTC Docker容器部署优势方案&#xff08;mpromonet/webrtc-streamer&#xff09;步骤 WebRTC简介 WebRTC&#xff08;Web Real-Time Communication&#xff09;是一种开放的实时通信技术&#xff0c;它允许浏览器之间进行音频、视频和数据的实时传输。W…

第九十二天学习记录:C++核心:类和对象Ⅰ(五星重要)

C面向对象的三大特性为&#xff1a;封装、继承、多态 C认为万事万物都皆为对象&#xff0c;对象上有其属性和行为 封装 封装的意义 封装是C面向对象三大特性之一 封装的意义&#xff1a; 1、将属性和行为作为一个整体&#xff0c;表现生活中的事物 2、将属性和行为加以权限…