我是使用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#gsub
或String#%
。
祝你今天愉快!