当前位置:首页 > JavaScript

js实现文字选择

2026-03-15 13:37:48JavaScript

实现文字选择的基本方法

使用JavaScript的SelectionRange API可以实现在网页中选择特定文本的功能。以下是核心实现方式:

// 获取当前选中文本
const selection = window.getSelection();
const selectedText = selection.toString();

选中指定DOM节点的文本

通过创建Range对象指定需要选中的DOM节点范围:

const element = document.getElementById('target');
const range = document.createRange();
range.selectNodeContents(element);
const selection = window.getSelection();
selection.removeAllRanges();
selection.addRange(range);

选中特定字符范围

精确选择文本中的某一部分字符:

const textNode = document.querySelector('p').firstChild;
const range = document.createRange();
range.setStart(textNode, 5); // 从第5个字符开始
range.setEnd(textNode, 10);  // 到第10个字符结束
window.getSelection().addRange(range);

清除当前选中状态

window.getSelection().removeAllRanges();

处理跨浏览器兼容性

不同浏览器对Selection API的实现有差异,以下是兼容处理方案:

function selectText(node) {
    if (document.body.createTextRange) {
        // IE兼容
        const range = document.body.createTextRange();
        range.moveToElementText(node);
        range.select();
    } else if (window.getSelection) {
        // 标准实现
        const selection = window.getSelection();
        const range = document.createRange();
        range.selectNodeContents(node);
        selection.removeAllRanges();
        selection.addRange(range);
    }
}

获取选中文本的位置信息

const selection = window.getSelection();
if (selection.rangeCount > 0) {
    const range = selection.getRangeAt(0);
    const startOffset = range.startOffset;
    const endOffset = range.endOffset;
    const startContainer = range.startContainer;
    const endContainer = range.endContainer;
}

自定义高亮选中文本

结合CSS类实现视觉反馈:

function highlightSelection() {
    const selection = window.getSelection();
    if (!selection.isCollapsed) {
        const range = selection.getRangeAt(0);
        const span = document.createElement('span');
        span.className = 'highlight';
        range.surroundContents(span);
    }
}

对应的CSS样式:

js实现文字选择

.highlight {
    background-color: yellow;
    color: black;
}

标签: 文字js
分享给朋友:

相关文章

js实现分页

js实现分页

分页的基本实现思路 在JavaScript中实现分页功能通常需要结合前端和后端逻辑。前端负责渲染分页控件和处理用户交互,后端负责提供分页数据。 前端分页实现 纯前端分页适用于数据量较小的情况,可以直…

js实现拷贝

js实现拷贝

实现文本拷贝 使用 document.execCommand 方法(已废弃但兼容性较好): function copyText(text) { const textarea = document…

js类实现

js类实现

使用类实现 JavaScript 功能 在 JavaScript 中,类(Class)是一种语法糖,基于原型继承机制。通过 class 关键字可以更直观地定义对象模板。 基本类定义 class…

js钟表实现

js钟表实现

实现JavaScript钟表的基本方法 创建一个简单的JavaScript钟表可以通过以下步骤完成,涵盖数字和模拟两种形式。 数字钟表实现 HTML结构只需一个显示时间的容器: <div i…

js实现视口

js实现视口

js实现视口检测的方法 使用JavaScript检测元素是否进入视口(viewport)可以通过Intersection Observer API或手动计算元素位置实现。以下是两种常见方法: Int…

js 实现滚动

js 实现滚动

实现滚动的方法 使用 window.scrollTo() window.scrollTo() 方法可以滚动到文档中的特定位置。可以指定 x 和 y 坐标,或者使用平滑滚动的选项。 // 滚动到指定位…