我是使用tripit/slate创建文档的。所有文档内容都在.md文件中。石板正在使用redcarpet标记引擎。现在,当我将<script>标记放在下面的标记中时:
它将在html中转换为<script>document.write(window._restapiurl);</script>。该语句在<pre>标记中,因此将在页面上呈现为<script>document.write(window._restapiurl);</script>。该语句打印api端点的路径。
我想在页面上执行这个语句,这意味着语句应该打印varible window._restapiurl的值。如果我在页面生成后用html手动编写<script>标记,则将执行该语句并打印变量的值。
更新:
用:escape_html => true, :filter_html => true在config.rb上试过,但没有成功。
更多更新我需要在语言选择器curl选项卡中执行javascript语句。
more update,即使我删除了三重标记的,script标记也不会执行。它只是在页面上打印script语句。
如何执行用markdown编写的javascript代码?这样,每当新版本发布时,我都不需要更新api端点路径,而且我可以只通过更改变量的值来管理它。
发布于 2014-10-10 13:10:52
在md文件中,我已经替换了
api端点的url
下面的代码
<pre>
<script>document.write(window._restapiurl);</script>
</pre>这将以javascript文档化格式的暗箱执行tripit/slate语句。
发布于 2014-10-11 14:15:22
你真的需要把它放在一个代码块中吗?如果没有,只需将脚本标记放入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。
祝您今天愉快!
https://stackoverflow.com/questions/26260431
复制相似问题