当前位置:首页 > JavaScript

js实现光标

2026-04-07 04:52:03JavaScript

获取光标位置

通过 document.getSelection() 方法获取当前光标对象,再调用 getRangeAt(0) 获取光标所在的文本范围(Range)。

const selection = document.getSelection();
const range = selection.getRangeAt(0);
const cursorPosition = range.startOffset; // 光标在节点中的偏移量

设置光标位置

创建一个新的 Range 对象,指定目标节点和偏移量,再通过 SelectionremoveAllRanges()addRange() 方法移动光标。

const targetNode = document.getElementById("text");
const newRange = document.createRange();
newRange.setStart(targetNode, 3); // 设置起始位置
newRange.setEnd(targetNode, 3);   // 设置结束位置(闭合范围)

const selection = document.getSelection();
selection.removeAllRanges();
selection.addRange(newRange);

插入内容到光标处

通过 RangeinsertNode() 方法在光标位置插入文本或元素。

const selection = document.getSelection();
const range = selection.getRangeAt(0);
const newNode = document.createTextNode("插入的文本");
range.insertNode(newNode);

保存与恢复光标位置

使用 RangeSelection 对象保存当前光标状态,后续可通过恢复范围重新定位。

// 保存光标
let savedRange = document.getSelection().getRangeAt(0).cloneRange();

// 恢复光标
const selection = document.getSelection();
selection.removeAllRanges();
selection.addRange(savedRange);

监听光标事件

通过 mouseupkeyupselectionchange 事件实时获取光标位置变化。

document.addEventListener("selectionchange", () => {
  const selection = document.getSelection();
  console.log("当前光标位置:", selection.getRangeAt(0).startOffset);
});

兼容性说明

  • SelectionRange API 在现代浏览器中支持良好。
  • 对于老旧浏览器(如 IE8 及以下),需使用 document.selection 替代 document.getSelection()

示例:在输入框移动光标

针对 <input><textarea>,可直接使用 selectionStartselectionEnd 属性。

js实现光标

const input = document.querySelector("input");
input.selectionStart = 5; // 设置光标起始位置
input.selectionEnd = 5;   // 设置光标结束位置

标签: 光标js
分享给朋友:

相关文章

js实现列表

js实现列表

使用 JavaScript 实现列表 JavaScript 提供了多种方式来实现列表功能,包括数组操作、DOM 元素动态生成等。以下是几种常见的实现方法: 使用数组存储列表数据 数组是 JavaSc…

节流js实现

节流js实现

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

js实现显示隐藏

js实现显示隐藏

显示隐藏的实现方法 在JavaScript中,实现元素的显示和隐藏可以通过多种方式完成。以下是几种常见的方法: 修改CSS的display属性 通过改变元素的display属性可以在none(隐藏)…

js分页实现

js分页实现

分页的基本原理 分页的核心是通过计算当前页码和数据偏移量,从服务器或本地数据中截取对应范围的数据进行展示。通常需要以下参数:当前页码(currentPage)、每页条数(pageSize)、总数据量(…

js实现乘法

js实现乘法

实现乘法运算的方法 在JavaScript中实现乘法运算可以通过多种方式完成,以下列举几种常见方法: 基础运算符 直接使用乘法运算符*是最简单的方式: let result = 3 * 5; //…

js 实现文件上传

js 实现文件上传

文件上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现文件上传功能。以下是一个基础示例: <input ty…