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
相关产品推荐
相关产品推荐

