现在,我正在熟悉marked.js。我希望向调用marked.parse()时呈现的元素添加html属性。在此过程中,定义了一个自定义renderer对象,该对象覆盖code方法。
当renderer对象被传递给marked.parse(string, {'renderer': renderer})时,我开始键入marked.js应该解析的TextArea,引发以下错误:
Uncaught TypeError: t.text is not a function呈现器定义给定令牌的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
})发布于 2022-04-25 14:10:49
我相信传入的呈现器对象不会与默认呈现器合并,而是完全替换它。结果,渲染器只处理代码,但失去了所有其他渲染功能--参见“块级呈现器方法”和“内联级呈现器方法”这里。
尝试将代码更改为如下所示:
const renderer = new marked.Renderer();
renderer.code = function(code, infoString) {
return `
<code class="block_code_snippet fill_block_width">${string}</code
`
};https://stackoverflow.com/questions/71641865
复制相似问题