gpt4 book ai didi

javascript - Pagedown 和尖括号不配合

转载 作者:行者123 更新时间:2023-12-03 07:58:27 27 4
gpt4 key购买 nike

我正在尝试使用 Pagedown将 markdown(包含代码部分)解析为 html。

它基本上有效,但我注意到一个奇怪的行为。如果我的 Markdown 中有这个:

`ArrayList<String> names = new ArrayList<>();`

最终显示的文本是这样的:

ArrayList<string> names = new ArrayList&lt;&gt;();

请注意第一个 String是小写的,第二个 <>被转换为 html 实体,这些实体无法正确显示,因为它们最终位于代码块内。

如果我查看 Pagedown“认为”它应该处理的 Markdown ,它会变得更奇怪:

`ArrayList<string> names = new ArrayList&lt;&gt;();`</string>

显然,它正在处理 <String>代码文本部分作为 html 标记,并添加结束 </string>标签。解析该 markdown 会生成以下 html:

<code>ArrayList&lt;string&gt; names = new ArrayList&amp;lt;&amp;gt;();</code>

如果我提前对尖括号进行编码:

`ArrayList&lt;String&gt; names = new ArrayList&lt;&gt;();`

然后 Pagedown 只是将 html 实体编码为代码的一部分,这正是我希望它对尖括号执行的操作:

 <code>ArrayList&amp;lt;String&amp;gt; names = new ArrayList&amp;lt;&amp;gt;();</code>

我只是希望能够将 markdown (包含代码部分)放入 Pagedown 解析器中并让它输出经过净化的 html。这是我目前正在做的事情:

<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="Markdown.Converter.js"></script>
<script type="text/javascript" src="Markdown.Sanitizer.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script>
function parseMarkdown(){

var markdown = $("#markdown").html();

console.log("markdown: " + markdown);

var converter = new Markdown.getSanitizingConverter();
var html = converter.makeHtml(markdown);

console.log("html: " + html);

$("#markdown").html(html);
}
$(parseMarkdown);
</script>
</head>
<body onload="parseMarkdown">
<div id="markdown">
`ArrayList<String> names = new ArrayList<>();`
</div>

</body>

</html>

在现实生活中,Markdown 要么来自数据库(使用 Pagedown 编辑器编写),要么来自 Markdown 文件(使用基本文本编辑器编写)。我还缺少额外的步骤吗?上述方法是否存在在 Markdown 解析之前运行错误 JavaScript 的风险?

最佳答案

该问题与 Markdown 或 Pagedown 无关。

当您将内容放入 HTML 文档中时,HTML 解析器(浏览器...)会“纠正”无效的 HTML 片段。在您的情况下,它会自动添加一个结束标记以使 HTML 格式良好。作为解析过程的一部分,它显然还将“String”转换为小写“string”。

正如您自己所描述的,Markdown 代码可能应该来自不同的源(JSON、脚本元素中包含的外部资源等...),您根本不会遇到此问题。

关于javascript - Pagedown 和尖括号不配合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34699169/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com