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

在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 14:13:12