2

我正在使用Microsoft 的 Monaco Editor库在网页上创建代码编辑器,这很棒,但看起来,出于性能原因,实际上只渲染了可见的行,这听起来不像是你想要的问题打印编辑器的内容。

有没有办法强制渲染所有线条?

我最好的猜测是

editor.revealRange

和其他editor.reveal*方法,但这些方法似乎都不起作用。

4

2 回答 2

0

滚动到顶部,运行

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)
};
于 2022-02-11T23:08:12.433 回答
0

reveal存在将编辑器滚动到特定位置的方法。相反,您可以获取模型的全部内容并打印:

const content = editor.getModel().getValue();

但是,这仅返回原始文本,没有语法颜色。

于 2022-02-04T07:57:09.930 回答