我正在使用Microsoft 的 Monaco Editor库在网页上创建代码编辑器,这很棒,但看起来,出于性能原因,实际上只渲染了可见的行,这听起来不像是你想要的问题打印编辑器的内容。
有没有办法强制渲染所有线条?
我最好的猜测是
editor.revealRange
和其他editor.reveal*
方法,但这些方法似乎都不起作用。
我正在使用Microsoft 的 Monaco Editor库在网页上创建代码编辑器,这很棒,但看起来,出于性能原因,实际上只渲染了可见的行,这听起来不像是你想要的问题打印编辑器的内容。
有没有办法强制渲染所有线条?
我最好的猜测是
editor.revealRange
和其他editor.reveal*
方法,但这些方法似乎都不起作用。
滚动到顶部,运行
HTMLDivElement.prototype.removeChild=function(){}
然后滚动到底部。瞧,所有的线条都被渲染了。有些甚至两次,但这没关系,因为它们是绝对定位的。
您可以尝试通过以下方式避免重复
HTMLDivElement.prototype.reallyRemoveChild=HTMLDivElement.prototype.removeChild;
HTMLDivElement.prototype.removeChild=function(el){
if(el.parentElement.querySelectorAll(`[style="${el.getAttribute('style')}"]`).length === 2)
this.reallyRemoveChild.apply(this, arguments)
};
reveal
存在将编辑器滚动到特定位置的方法。相反,您可以获取模型的全部内容并打印:
const content = editor.getModel().getValue();
但是,这仅返回原始文本,没有语法颜色。