javascript - Markdown 美化

标签 javascript php jquery html markdown

我在我们的项目中使用 PageDpwn markdown 来轻松输入内容和代码片段。我已经打印出 markdown 并将其转换为 HTML。我使用 jQuery $.ajax 从数据库中检索 markdown 并即时转换它。当然这并不理想。我想从数据库直接打印出 HTML,但碰巧的是,当我这样做时,我必须使用 PHP 打印函数,其输出代码片段为:

<--?php # Code ?-->

这是非常不幸的。所以我在页面 View 中将 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>

如您所见,我正在使用 prettify 进行语法突出显示。在 markdown 中我通过使用成功了

```php
Code block here
```

我尝试使用:

<pre><code>Code block here</code></pre>

带有类,但代码块<>标签被注释掉。所以,我的问题是我必须在页面底部加载 prettify.js 以及 run_prettify.js ,否则语法突出显示或行编号将不会触发。在我的 body 上,我有:

<body onload="prettyPrint()">

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

最佳答案

答案是不使用 Javascript,而是使用 PHP 库进行 Markdown 将内容转换为 HTML。它使用 ASCII 字符以正确的方式在代码块内转换 HTML。我对库进行了一些调整,以提供 Prism.js 语法突出显示和行编号。

关于javascript - Markdown 美化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32836016/

相关文章:

php - 在初始化时测试 API key

php - 在 wordpress 核心中加载 css 和 js 文件

jquery - 没有类 ="current"的导航

使用 C# 和 SQL Server 数据库进行 jQuery 自动完成

javascript - 当用户在 Angular 中使用正则表达式仅输入 0 或 0.0 时如何显示错误消息?

javascript - 将JSON数据转换成Highcharts基本折线图中的格式

javascript - 当我通过时,React useCallback 会做什么。第一个参数中的对象

javascript - 使用 django 创建用于外部站点的自定义小部件

php - 集成自动 Paypal 商店系统?

javascript - 使用javascript滚动滚动条或鼠标滚轮后触发事件