You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Electron中如何获取光标位置(区别于鼠标指针位置)

概念说明

你提到的如下代码获取的是鼠标指针的屏幕坐标:

electron.app.on('ready', ()=> {
        // get the mouse position
        let mousePos = electron.screen.getCursorScreenPoint();
        console.log(mousePos);
});

它和文本输入场景下的**文本插入光标(也叫插入符/Caret)**是完全不同的两种对象,Electron没有提供统一的原生API直接获取插入光标位置,需要分场景处理:

场景1:获取当前Electron应用内的光标位置

直接使用Web原生API即可,不需要调用Electron专属能力:

  • 针对<input>、<textarea>元素:
const targetInput = document.querySelector('input');
// 光标在文本中的索引位置,从0开始计数
const caretIndex = targetInput.selectionStart;
console.log(caretIndex);
  • 针对contenteditable属性标记的可编辑元素:
const selection = window.getSelection();
if (selection.rangeCount > 0) {
  const range = selection.getRangeAt(0);
  // 光标在当前所在文本节点中的偏移索引
  console.log(range.startOffset);
  // 如果需要光标在屏幕的坐标,可调用如下方法
  const caretRect = range.getBoundingClientRect();
  console.log(caretRect.x, caretRect.y);
}

场景2:获取操作系统其他第三方应用内的光标位置

Electron原生没有提供该能力,需要通过Node.js原生扩展调用对应系统的底层接口实现:

  • Windows平台:调用Win32 API GetCaretPos 获取插入符的屏幕坐标
  • macOS平台:调用系统Accessibility API查询当前聚焦应用的插入符位置
  • Linux平台:调用对应桌面环境的相关接口实现

你可以使用napi-rs、node-ffi等工具封装上述系统调用,集成到你的Electron项目中。

内容的提问来源于stack exchange,提问作者d-feverx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 20:24:03