首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在javascript中嵌入Heist标签

在javascript中嵌入Heist标签
EN

Stack Overflow用户
提问于 2012-12-27 06:51:02
回答 1查看 378关注 0票数 3

由于一些库的不兼容,我不能在同一个应用程序中同时使用Pandoc和Heist。因此,我决定使用Markdown.JS来处理在客户端浏览器中从Markdown格式数据到超文本标记语言的转换。从长远来看,这可能会有一些不错的额外好处,但在短期内,这只是因为Pandoc依赖于Blaze-HTML0.4,而Heist依赖于Blaze-HTML0.5。

因此,在一个类似weblog的应用程序中,我有一个用来填写每个条目的模板,但是在页面加载之后,需要将每个条目的内容转换为HTML。因此,我创建了一个模板,如下所示:

代码语言:javascript
复制
<h2> <a href="wiki/${target}"><entryTitle /></a> </h2>
<p class="entryDate"> <entryDate /> </p>
<div id="body_${entryDate}">
<entryBody />
</div>

<script type="text/javascript">
renderDiv("body_" + <entryDate />)
</script>

不幸的是,renderDiv调用最终呈现如下:

代码语言:javascript
复制
<script type='text/javascript'>
renderDiv("body_" + <entryDate />)
</script>

我还尝试了使用字符串嵌入的形式(就像我在模板中对div id所做的那样):

代码语言:javascript
复制
<script type="text/javascript">
renderDiv("body_${entryDate}")
</script>

同样,它是逐字呈现的。

我如何说服Heist在javascript内部拼接entryDate?

或者,我使用Prototype.JS作为Javascript库。有没有办法让我把脚本放在div里面,然后基本上用"self“来调用脚本?

代码语言:javascript
复制
<div id="body_${entryDate}">
<entryBody />
<script type="text/javascript">
renderDiv($(self))
</script>
</div>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-28 05:52:25

Heist有意不在script标记内进行拼接替换,因为拼接是在DOM元素上完成的,并且script标记的内容是纯文本,而不是DOM。我们这样做是因为如果我们做了你想做的,解析器将不能判断一个'<‘字符代表的是二进制小于运算符,还是一个标签的开始。User1891025建议生成一个完整的脚本标记,这是一种方法。

然而,Heist和Pandoc之间的依赖冲突不应该阻止你使用我们内置的markdown拼接。我们实际上并没有链接Pandoc库。我们只依赖于pandoc可执行程序。所以你要做的就是从一个干净的存储库构建pandoc (或者使用一个构建沙箱),将pandoc二进制文件放入你的path中,然后从另一个干净的存储库/沙箱构建Heist。这样你就不必担心这些javascript的东西了。

如果你仍然想使用javascript来做这件事或其他事情,我建议你不要从Heist生成javascript。Heist是为HTML生成而设计的,而不是javascript生成。我更喜欢把我所有的javascript放在独立的.js文件中。然后,您可以方便地使用snap-extras库中的this splice加载它们。

要回答你的最后一个问题,你可以用renderDiv(this)调用一个这样的div。

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

https://stackoverflow.com/questions/14047248

复制
相关文章

相似问题

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