当前位置:首页 > JavaScript

js实现文字选择

2026-03-15 13:37:48JavaScript

实现文字选择的基本方法

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

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

选中指定DOM节点的文本

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

js实现文字选择

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的实现有差异,以下是兼容处理方案:

js实现文字选择

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样式:

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

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

相关文章

js 实现链表

js 实现链表

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的指针。与数组不同,链表在内存中是非连续存储的,插入和删除操作效率较高。 链表的实现 在 JavaScrip…

链表实现js

链表实现js

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和一个指向下一个节点的指针(单向链表)或两个指针(双向链表)。与数组不同,链表在内存中非连续存储,插入和删除操作更高效,但随机…

节流js实现

节流js实现

节流(Throttle)的实现原理 节流是一种限制函数执行频率的技术,确保函数在一定时间间隔内最多执行一次。适用于高频触发事件(如滚动、输入、窗口调整等)的场景。 基础实现方式 使用时间戳判断是否执…

js实现 功能

js实现 功能

在 JavaScript 中实现功能通常涉及多个关键步骤,具体取决于功能需求。以下是常见功能的实现方法和示例: 基本功能实现 使用函数封装逻辑是最直接的方式。例如,实现一个计算两数之和的函数: f…

js实现下拉菜单

js实现下拉菜单

使用HTML和CSS创建基础结构 HTML部分需要包含一个触发下拉的按钮和隐藏的下拉菜单内容: <div class="dropdown"> <button class="dr…

js进度条实现

js进度条实现

使用HTML和CSS创建基础结构 在HTML中创建一个容器元素用于显示进度条,通常使用<div>元素。CSS用于设置进度条的样式,包括宽度、高度、颜色和圆角等属性。 <div cl…