首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >redcarpet执行javascript代码

redcarpet执行javascript代码
EN

Stack Overflow用户
提问于 2014-10-08 15:13:15
回答 2查看 1.4K关注 0票数 0

我是使用tripit/slate创建文档的。所有文档内容都在.md文件中。石板正在使用redcarpet标记引擎。现在,当我将<script>标记放在下面的标记中时:

代码语言:javascript
复制

代码语言:javascript
复制

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

我想在页面上执行这个语句,这意味着语句应该打印varible window._restapiurl的值。如果我在页面生成后用html手动编写<script>标记,则将执行该语句并打印变量的值。

更新:

:escape_html => true, :filter_html => trueconfig.rb上试过,但没有成功。

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

more update,即使我删除了三重标记的,script标记也不会执行。它只是在页面上打印script语句。

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

EN

回答 2

Stack Overflow用户

发布于 2014-10-10 13:10:52

在md文件中,我已经替换了

代码语言:javascript
复制

api端点的url

代码语言:javascript
复制

下面的代码

代码语言:javascript
复制
<pre>
     <script>document.write(window._restapiurl);</script>
</pre>

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

票数 0
EN

Stack Overflow用户

发布于 2014-10-11 14:15:22

你真的需要把它放在一个代码块中吗?如果没有,只需将脚本标记放入Markdown文件(甚至,FWIW,自己编写<pre><code> )即可。否则,你很难做到这一点。事实是,在默认情况下,Redcarpet的HTML呈现对象将转义代码块中的任何HTML标记。您唯一的选择是实现自定义呈现对象。您可以依赖于这样一个事实,即生成给block_code方法的代码不是HTML转义的:

代码语言:javascript
复制
class CustomRender < Redcarpet::Render::HTML
  def block_code(code, lang)
    "<pre>" \
      "<code class=\"#{lang}\">#{code}</code>" \
    "</pre>"
  end
end

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

代码语言:javascript
复制
Redcarpet::Markdown.new(CustomRender, fenced_code_blocks: true)

而且,你可能做错了。如果只是在代码段中插入一些特殊的值,那么您可能需要在代码段中使用一种特殊的语法,并将其替换为您自己的值。您可以在自定义呈现对象中再次这样做,在给定的String#gsub变量上使用String#%code

祝您今天愉快!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26260431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档