因此,我们具有从YAML生成的HTML。然后,我们使用非凡的js处理浏览器中DOM树的 part 。也就是说,我们使用“ markdown”标签获取所有元素,使用非凡的js解析其文本,然后替换其innerHTML。不幸的是,要么我们无法正确呈现HTML实体,要么我们无法正确呈现HTML标签。
是否有推荐的方法可以在浏览器中解析markdown?
// sample text:
// - markdown list with <b>`bold &`</b>
var elements = document.getElementsByClassName('markdown');
var count = elements.length;
// generates HTML entities correctly but not HTML tags
for (let index = 0; index < count; index++) {
var newText = md.render(elements[index].textContent);
elements[index].innerHTML = newText;
}
// generates HTML tags correctly but not HTML entities
for (let index = 0; index < count; index++) {
var newText = md.render(elements[index].innerHTML);
elements[index].innerHTML = newText;
}
更新:我认为我理解会发生什么,将 &
视作&
后接amp;
,因此,我得到的是&amp;
无法正确呈现。但是,即使我将输入更改为&
,innerHTML
也会将其更改回&
。
更新:我能够回购:https://jsfiddle.net/v1o7hLnr/。 令人惊讶的突破是两件事:1)使用innerHTML获取要解析的文本,以及2)将HTML实体包装在代码块中。看到这里:https://jsfiddle.net/vLr1qbfc/
这是正在发生的事情(请参见https://jsfiddle.net/k8hy2mtf/):
&
编码为&
。`x&y`
,所以收到了`x&y`
。那么,我的第一个问题就成立了……正确呈现具有卓越性能的HTML文档的最佳方法是什么?我们应该在构建时解析吗?