redcarpet markdown-执行javascript代码

redcarpet markdown - execute javascript code

本文关键字:代码 javascript 执行 markdown- redcarpet      更新时间:2023-09-26

我是使用tripit/slate创建文档的。所有文档内容都在.md文件中。slate正在使用redcarpet降价引擎。现在,当我把<script>标签放在markdown中时,如下所示:

```
<script>document.write(window._restapiurl);</script>
```

它将被转换为html中的CCD_ 5。该语句位于<pre>标记中,因此将在第页上呈现为<script>document.write(window._restapiurl);</script>。该语句打印api端点的路径。

我想在页面上执行此语句,这意味着该语句应该打印可变window._restapiurl的值。如果在页面构建后手动在html中编写<script>标记,则会执行该语句并打印变量的值。

更新:

尝试在config.rb中使用:escape_html => true, :filter_html => true,但没有成功。

更多更新我需要在我的语言选择器curl选项卡中执行javascript语句。

更多更新即使我删除了三个记号``,script标记也不会执行。它只是将script语句打印在一页上。

如何执行用markdown编写的javascript代码???这样,每当发布新版本时,我就不需要更新api端点路径,并且我可以只通过更改变量的值来管理它

在md文件中,我替换了

```
url of api endpoint 
```

带有以下代码的

<pre>
     <script>document.write(window._restapiurl);</script>
</pre>

这将在tripit/slate文档格式的暗箱中执行javascript语句。

您真的需要把它放在代码块中吗?如果没有,只需将脚本标记放在Markdown文件中(甚至FWIW,自己编写<pre><code>)。否则,你不可能轻易做到这一点。事实是,在默认情况下,红地毯的HTML呈现对象将转义代码块中的任何HTML标记。您唯一的选择是实现自定义渲染对象。您可以相信,block_code方法产生的代码不是HTML转义的:

class CustomRender < Redcarpet::Render::HTML
  def block_code(code, lang)
    "<pre>" '
      "<code class='"#{lang}'">#{code}</code>" '
    "</pre>"
  end
end

然后将此对象传递给您的Redcarpet::Markdown实例:

Redcarpet::Markdown.new(CustomRender, fenced_code_blocks: true)

此外,你可能做错了。如果只是在代码段中插入一些特殊的值,那么您可能希望在代码段内使用特殊的语法,并将其替换为自己的值。可以在自定义渲染对象中再次执行此操作,对给定的code变量使用String#gsubString#%

祝你今天愉快!