当前位置:首页 > JavaScript

js实现游标

2026-02-28 19:31:16JavaScript

游标的基本概念

游标(Cursor)在JavaScript中通常指代用户在界面上的指针位置或文本选择范围。可以通过DOM API获取或操作游标位置,常见于输入框、富文本编辑器等场景。

获取输入框游标位置

使用selectionStartselectionEnd属性获取输入框当前光标位置或选中文本范围:

const input = document.getElementById('myInput');
const cursorPos = input.selectionStart; // 获取光标开始位置
const selectionEnd = input.selectionEnd; // 获取光标结束位置

设置输入框游标位置

通过setSelectionRange()方法设置光标位置或选中范围:

input.setSelectionRange(3, 5); // 将光标定位在第3到第5字符之间(选中状态)
input.setSelectionRange(3, 3); // 将光标定位在第3字符后(非选中)

可编辑元素的游标控制

对于contentEditable元素或富文本编辑器,需要使用SelectionRange API:

const editableDiv = document.getElementById('editable');
const selection = window.getSelection();
const range = document.createRange();

range.setStart(editableDiv.childNodes[0], 5); // 从第1个子节点的第5字符开始
range.setEnd(editableDiv.childNodes[0], 10); // 到第1个子节点的第10字符结束
selection.removeAllRanges();
selection.addRange(range);

保存与恢复游标位置

需要保存游标状态时,可记录节点和偏移量:

const savedRange = range.cloneRange(); // 克隆当前Range对象
// 恢复时
selection.removeAllRanges();
selection.addRange(savedRange);

跨浏览器兼容方案

不同浏览器对游标API的实现有差异,推荐使用规范化库:

  • 对于输入框:使用input.selectionStart/End
  • 对于富文本:使用rangy.js等库处理兼容性

实际应用示例

自动聚焦并定位到输入框末尾:

js实现游标

function focusAtEnd(inputElement) {
  inputElement.focus();
  const len = inputElement.value.length;
  inputElement.setSelectionRange(len, len);
}

通过上述方法可以实现精确的游标控制,适用于表单校验、代码编辑器、实时预览等需要精细控制输入位置的场景。

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

相关文章

css3结合js制作

css3结合js制作

CSS3 结合 JavaScript 制作动态效果 CSS3 和 JavaScript 结合可以实现丰富的动态效果,包括动画、交互和响应式设计。以下是几种常见的实现方式: CSS3 动画与 Java…

js实现分页

js实现分页

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

js如何实现继承

js如何实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例能够访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Parent…

原生js实现轮播图

原生js实现轮播图

基本结构搭建 HTML部分需要包含轮播图容器、图片列表及导航按钮。结构示例如下: <div class="slider-container"> <div class="slid…

js实现dh

js实现dh

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

js实现图

js实现图

JavaScript 实现图的常用方法 在 JavaScript 中,图(Graph)可以通过多种方式实现,常见的包括邻接表(Adjacency List)和邻接矩阵(Adjacency Matrix…