Markdown Prettify

时间:2015-09-29 05:03:53

标签: javascript php jquery html markdown

我在项目中使用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()">

这没有控制台错误,但由于一些奇怪的原因,语法突出显示的一小部分时间不会触发。我必须在几次之后重新加载页面。然后它会工作一段时间,或者可能更长一段时间,但这种奇怪的行为不断发生。谁知道为什么?

1 个答案:

答案 0 :(得分:0)

答案是不使用Javascript并使用PHP库进行markdown将内容转换为HTML。它使用ASCII字符以正确的方式在代码块中包含HTML。我调整了一下库以提供Prism.js语法高亮和行编号。