用户定义的呈现器对象会导致一个TypeError标记的.js



现在我已经熟悉了标记的.js。我想为调用marked.parse()时渲染的元素添加html属性。在执行此操作时,定义了一个自定义renderer对象,该对象覆盖code方法。

renderer对象被传递给marked.parse(string, {'renderer': renderer}),并且我开始在标记为.js的TextArea中键入时,会引发以下错误:

  • Uncaught TypeError: t.text is not a function

https://marked.js.org/using_pro#renderer

渲染器定义给定令牌的HTML输出。如果将渲染器对象提供给"标记"选项,它将与内置渲染器合并,其中的任何函数都将覆盖该令牌类型的默认处理。

引发此错误的原因是什么?

const renderer = {
code(code, infoString) {
return `
<code class="block_code_snippet fill_block_width">${string}</code
`
},
};
post_content_body.addEventListener("keyup", (event) => {
let marked_post_content = marked.parse(
post_content_body.value, {"renderer": renderer}
);
post_preview.innerHTML = marked_post_content
})

我相信传入的渲染器对象没有与默认渲染器合并,而是完全替换了它。结果,渲染器只处理代码,但失去了所有其他渲染功能——参见";块级渲染器方法";以及";内联级渲染器方法";在这里

尝试将代码更改为以下内容:

const renderer = new marked.Renderer();
renderer.code = function(code, infoString) {
return `
<code class="block_code_snippet fill_block_width">${string}</code
`
};

最新更新