当前位置:首页 > JavaScript

js实现选区

2026-02-02 07:15:48JavaScript

选区的基本概念

选区(Selection)指用户在文档或输入框中选择的文本范围。通过JavaScript可以获取、修改或操作选区内容,常用于富文本编辑器、代码高亮等场景。

获取当前选区

使用 window.getSelection() 方法获取当前选区对象:

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

创建和设置选区

通过 Range 对象和 Selection 接口动态创建选区:

const range = document.createRange();
const targetNode = document.getElementById('target');
range.selectNodeContents(targetNode); // 选择节点内容

const selection = window.getSelection();
selection.removeAllRanges(); // 清除现有选区
selection.addRange(range);   // 设置新选区

操作选区范围

  • 调整选区起始点
    range.setStart(targetNode, 2); // 从目标节点的第2个子节点开始
    range.setEnd(targetNode, 4);   // 到第4个子节点结束
  • 选区可视化高亮
    通过CSS伪类 ::selection 自定义选中样式:
    ::selection {
      background-color: #ffcc00;
      color: #000;
    }

实际应用示例

在富文本编辑器中插入内容到选区位置:

js实现选区

function insertTextAtSelection(text) {
  const selection = window.getSelection();
  if (selection.rangeCount > 0) {
    const range = selection.getRangeAt(0);
    range.deleteContents(); // 删除选中内容
    range.insertNode(document.createTextNode(text)); // 插入新文本
  }
}

兼容性注意事项

  • 旧版IE(≤8)使用 document.selection 而非 window.getSelection()
  • 移动端浏览器对选区操作的支持可能有限,需测试目标平台。

常用API速查

方法/属性 说明
selection.anchorNode 选区起点所在的节点
selection.extend() 动态扩展选区范围
range.cloneContents() 复制选区内容为文档片段
range.extractContents() 提取并移除选区内容

标签: 选区js
分享给朋友:

相关文章

js实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 或直接使用 window.location 实现页面跳转,适用于普通跳转或带参数的 URL。 // 方…

js实现分页

js实现分页

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

js实现视口

js实现视口

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

js实现滚动

js实现滚动

实现滚动效果的方法 在JavaScript中实现滚动效果可以通过多种方式完成,以下是一些常见的方法: 使用window.scrollTo() window.scrollTo()方法可以将页面滚动到指…

实现继承js

实现继承js

实现继承的方式 在JavaScript中,实现继承可以通过多种方式完成,每种方式都有其优缺点。以下是几种常见的实现继承的方法: 原型链继承 原型链继承是最基本的继承方式,通过将子类的原型指向父类的实…

js 实现页面刷新

js 实现页面刷新

使用 location.reload() location.reload() 是原生 JavaScript 提供的页面刷新方法。调用该方法会重新加载当前页面,相当于点击浏览器的刷新按钮。 // 基本…