当前位置:首页 > JavaScript

js实现选区

2026-02-02 07:15:48JavaScript

选区的基本概念

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

js实现选区

获取当前选区

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

js实现选区

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;
    }

实际应用示例

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

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.href = 'https:/…

js实现动画

js实现动画

使用 CSS 动画与 JavaScript 控制 通过 JavaScript 动态添加或移除 CSS 类来触发动画。CSS 定义关键帧(@keyframes),JavaScript 通过 classL…

js实现图片轮播

js实现图片轮播

实现基础图片轮播 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS设置样式和动画效果,JavaScript处理轮播逻辑。 <div c…

js实现图片上传

js实现图片上传

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现图片上传功能。HTML部分需要创建一个文件选择输入框和一个用于…

js实现全选

js实现全选

实现全选功能的方法 在JavaScript中实现全选功能通常涉及监听全选复选框的点击事件,并根据其状态控制其他复选框的选中状态。以下是几种常见的实现方式: 基础DOM操作实现 通过获取所有目标复选…

js实现图片预览

js实现图片预览

使用FileReader API实现图片预览 通过FileReader对象读取用户选择的图片文件并显示预览: const input = document.getElementById('image…