当前位置:首页 > 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()方法设置光标位置或选中范围:

js实现游标

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

保存与恢复游标位置

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

js实现游标

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

跨浏览器兼容方案

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

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

实际应用示例

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

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

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

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

相关文章

js实现vue

js实现vue

Vue.js 简介 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。其核心库专注于视图层,易于与其他库或现有项目整合。 实现 Vue.js 的基本步骤 安装 Vue.…

js实现图表

js实现图表

在JavaScript中实现图表通常使用流行的图表库,以下是几种常见的方法和工具: 使用Chart.js Chart.js是一个简单灵活的库,适合快速生成响应式图表。安装方式包括CDN引入或npm安…

js实现百叶窗

js实现百叶窗

使用CSS和JavaScript实现百叶窗效果 通过CSS动画和JavaScript事件监听可以实现百叶窗效果。核心思路是将内容区域分割为多个条状元素,通过控制它们的展开/折叠状态来模拟百叶窗。…

js实现驼峰

js实现驼峰

实现驼峰命名的几种方法 使用正则表达式和字符串替换 通过正则表达式匹配字符串中的特定模式(如下划线或短横线),并将其后的字母转换为大写,同时移除分隔符。 function toCamelCase(s…

js树实现

js树实现

树的基本概念 树是一种非线性的数据结构,由节点和边组成。每个节点包含一个值和指向子节点的引用。树的顶部节点称为根节点,没有子节点的节点称为叶节点。 树的实现方式 在JavaScript中,树可以通…

js实现投球

js实现投球

实现投球动画的基本思路 使用JavaScript和CSS动画结合的方式模拟投球效果。核心是通过改变元素的位置、旋转和缩放属性,配合定时器或CSS过渡实现平滑动画。 创建基础HTML结构 <d…