当前位置:首页 > 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实现dh

js实现dh

JavaScript 实现 DH(Diffie-Hellman)密钥交换 Diffie-Hellman(DH)密钥交换是一种安全协议,允许双方在不安全的通信信道上建立一个共享密钥。以下是如何在 Jav…

js实现游标

js实现游标

使用JavaScript实现游标 在JavaScript中,可以通过操作DOM元素的cursor样式属性来实现自定义游标效果。以下是几种常见的实现方法: 修改默认鼠标指针样式 通过CSS的curso…

js实现交换

js实现交换

交换变量的方法 在JavaScript中,交换两个变量的值有多种方法。以下是常见的几种实现方式: 使用临时变量 通过引入一个临时变量来存储其中一个变量的值,实现交换: let a = 1; le…

js节流实现

js节流实现

节流的概念 节流(Throttle)是一种限制函数执行频率的技术,确保函数在一定时间间隔内只执行一次。常用于滚动事件、窗口调整等高频触发的场景。 基础实现方法 使用时间戳判断是否执行函数:…

js实现路由

js实现路由

js实现路由的方法 在JavaScript中实现路由功能可以通过多种方式完成,以下是几种常见的方法: 使用原生JavaScript实现路由 通过监听window.onhashchange事件来实现基…

js实现显示隐藏

js实现显示隐藏

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