Pagedown和Angle Brackets不合作
Pagedown and Angle Brackets not Cooperating
我正在尝试使用Pagedown将markdown(包含代码段)解析为html。
它基本上是有效的,但我注意到了一个奇怪的行为。如果我的降价中有这个:
`ArrayList<String> names = new ArrayList<>();`
显示的文本最终为:
ArrayList<string> names = new ArrayList<>();
请注意,第一个String
是小写的,第二个<>
被转换为html实体,由于它们最终位于代码块中,因此无法正确显示。
如果我看到Pagedown"认为"它应该处理的降价,它会变得更奇怪:
`ArrayList<string> names = new ArrayList<>();`</string>
显然,它将代码文本的<String>
部分视为html标记,并添加一个结束的</string>
标记。解析该标记产生以下html:
<code>ArrayList<string> names = new ArrayList&lt;&gt;();</code>
如果我提前对尖括号进行编码:
`ArrayList<String> names = new ArrayList<>();`
然后Pagedown简单地将html实体作为代码的一部分进行编码,这正是我希望它使用尖括号所做的:
<code>ArrayList&lt;String&gt; names = new ArrayList&lt;&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>
在现实生活中,标记要么来自数据库(使用Pagedown编辑器编写),要么来自标记文件(使用基本文本编辑器编写)。我少了一步吗?在Markdown解析之前,上述方法是否存在运行糟糕JavaScript的风险?
问题与Markdown或Pagedown无关。
当您将内容放入HTML文档中时,HTML解析器(浏览器…)会"更正"无效的HTML片段。在您的情况下,它会自动添加一个结束标记,使HTML格式良好。作为解析过程的一部分,它显然还将"String"转换为小写"String"。
正如您自己所描述的,Markdown代码可能来自不同的源(JSON、封装在脚本元素中的外部资源等),在那里您根本不会遇到这个问题。
相关文章:
- 为什么不't Javascript对我的输入值进行了一些重新检查
- electronic BrowserWindow的最小高度和宽度在hide()show()方法之后不起作用
- 不能从angular2中的子组件指定父组件中的数组
- Javascript:selenium Web驱动程序isDisplayed()不工作
- Dojo不解析自定义小部件的模板html中的小部件声明性
- 剑道UI不与流星合作
- ReactJS不与Zurb Foundation Accorsions合作吗
- JQuery不与Jade合作
- Meteor Accounts.ui.config 不与 Google 合作
- Complexe child_process不与 Promise 蓝鸟合作
- RESTAdapter不与Ember合作
- Pagedown和Angle Brackets不合作
- Rails 4 App-JS在开发模式下可以与Webrick合作,但不能与Passenger/Apache2合作
- 谷歌图表不与我合作
- touchend和target_blank不合作
- Debowerify不与Grunt合作
- 函数不合作:/
- Brackets.io扩展中存在模块不存在错误
- JavaScript -存储在localStorage中的日期不与函数合作
- 在合作伙伴网站上添加javascript,以便在不知道其FTP凭据的情况下提供客户聊天支持和销售跟踪