我試圖用Pagedown將markdown(包含代碼段)解析爲html。Pagedown和Angle Brackets not Cooperating
它主要工作,但我注意到一個奇怪的行爲。如果我有這在我的降價:
`ArrayList<String> names = new ArrayList<>();`
顯示文本最終是這樣的:
ArrayList<string> names = new ArrayList<>();
注意,第一String
是小寫,第二<>
被轉換成HTML實體,因爲它們最終在代碼塊內部,所以它們沒有被正確顯示。
如果我看着下頁「認爲」降價它應該處理,它得到的陌生人:
`ArrayList<string> names = new ArrayList<>();`</string>
顯然,這是治療的代碼文本作爲HTML標籤的<String>
部分,並增加了關閉</string>
標記。解析該降價產生這個網站:如果我編碼尖括號提前
<code>ArrayList<string> names = new ArrayList&lt;&gt;();</code>
:
`ArrayList<String> names = new ArrayList<>();`
然後下頁簡單地編碼的HTML實體代碼的一部分,這是我想要什麼它做的尖括號:
<code>ArrayList&lt;String&gt; names = new ArrayList&lt;&gt;();</code>
我只是希望能夠拋出降價(含代碼段)進入下頁解析器和有它輸出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解析之前,上面的方法是否會運行糟糕的JavaScript風險?
在現實生活中,我使用JSTL將markdown(來自數據庫或文件)包含到頁面的html中,然後使用上述方法解析它。這不是我應該做的嗎? –
@KevinWorkman老實說,我不知道JSTL是什麼,但是無論何時你把HTML內容直接放到你的HTML裏面(這意味着任何*看起來像HTML - 標籤),解析器將不會保留它,因爲它是。 – Amit
JSTL就是在服務器端構建html的。你能擴展你的意思嗎?「包裝在腳本元素中的外部資源」? –