在monaco-editor中选中长代码时,window.getSelection.toString()为何返回省略号?
解决Monaco Editor长代码选中后window.getSelection()返回省略号的问题
不要使用原生的window.getSelection().toString()获取Monaco Editor里的选中内容——Monaco为了性能优化,对长代码会做虚拟渲染,只在DOM中加载可视区域附近的内容,原生方法只能拿到DOM中实际存在的文本,长内容时就会出现省略号。
正确做法是用Monaco Editor自身的API获取完整选中内容:
- 确保持有Monaco Editor的实例对象(比如初始化时创建的
editor) - 通过实例的
getSelection()方法获取当前选区范围 - 再通过编辑器模型的
getValueInRange()方法,传入选区范围,即可拿到完整的选中文本
示例代码:
// 假设editor是你的Monaco Editor实例 const selection = editor.getSelection(); if (selection && !selection.isEmpty()) { const fullSelectedText = editor.getModel().getValueInRange(selection); // fullSelectedText为完整选中内容,无省略号 }
Monaco的模型(Model)是存储完整代码数据的核心,不受DOM渲染限制,通过模型API获取内容是最可靠的方式。
内容的提问来源于stack exchange,提问作者asibei
相关产品推荐
相关产品推荐

