我在项目中使用PageDpwn
markdown来轻松输入内容和代码片段。我已经打印出markdown
并将其转换为HTML。我使用jQuery $.ajax
从数据库中检索markdown并动态转换它。当然这并不理想。我想从数据库中打印出直接的HTML,但是当我这样做时,我必须使用PHP
打印函数输出代码片段:
<--?php # Code ?-->
这非常不幸。所以我在页面视图中将markdown转换为HTML。
<script>
var id = $('input[name=id]').val();
var html = '';
$.ajax({
url: BASE_DIR + 'pages/get_post/' + id,
type: 'POST',
dataType: 'json',
success: function(data) {
html = data;
var converter = new Markdown.Converter();
Markdown.Extra.init(converter, {
extensions: "all",
highlighter: "prettify"
});
$('#html').html(converter.makeHtml(html)); }
});
</script>
正如您所看到的,我正在使用美化来进行语法突出显示。在markdown中,我通过使用
成功```php
Code block here
```
我尝试使用:
<pre><code>Code block here</code></pre>
使用类,但代码块&lt; &GT;标签被注释掉了。所以,我的问题是我必须在页面底部加载prettify.js
以及run_prettify.js
,否则语法突出显示或行编号将不会触发。在我的身体上,我有:
<body onload="prettyPrint()">
这没有控制台错误,但由于一些奇怪的原因,语法突出显示的一小部分时间不会触发。我必须在几次之后重新加载页面。然后它会工作一段时间,或者可能更长一段时间,但这种奇怪的行为不断发生。谁知道为什么?
答案 0 :(得分:0)
答案是不使用Javascript并使用PHP库进行markdown将内容转换为HTML。它使用ASCII字符以正确的方式在代码块中包含HTML。我调整了一下库以提供Prism.js语法高亮和行编号。