我使用tripit/slate
创建了文档。所有文档内容都在.md
文件中。平板正在使用redcarpet
降价引擎。现在,当我在markdown中添加<script>
标记时如下:
```
<script>document.write(window._restapiurl);</script>
```
它将在html中转换为<script>document.write(window._restapiurl);</script>
。该语句位于<pre>
标记中,因此将在页面上呈现为<script>document.write(window._restapiurl);</script>
。该语句打印api端点的路径。
我想在页面上执行此语句,这意味着该语句应该打印变量window._restapiurl
的值。如果我在页面构建后手动在html中编写<script>
标记,则将执行该语句并打印变量的值。
更新
在:escape_html => true, :filter_html => true
中使用config.rb
进行了尝试,但它无效。
更新
我需要在我的语言选择器curl
选项卡中执行javascript语句。
更新
即使我删除三重标记```,script
标记也不会执行。它只是在页面上打印script
语句。
如何执行markdown中编写的javascript代码???因此,每当发布新版本时我都不需要更新api端点路径,我可以通过仅更改变量值来管理它。
答案 0 :(得分:0)
在md文件中我已经替换了
```
url of api endpoint
```
以下代码
<pre>
<script>document.write(window._restapiurl);</script>
</pre>
这将在javascript
文档格式的暗盒中执行tripit/slate
语句。
答案 1 :(得分:0)
你真的需要把它放在一个代码块中吗?如果不是,只需将脚本标记放在Markdown文件中(或者甚至是FWIW,自己编写<pre><code>
)。否则,你不能轻易做到这一点。事实是,默认情况下,Redcarpet的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)
而且,你可能做错了。如果它只是在您的代码段中插入一些特殊值,那么您可能希望在代码段中使用特殊语法并将其替换为您自己的值。您可以使用给定String#gsub
变量上的String#%
或code
再次在自定义渲染对象中执行此操作。
度过美好的一天!