如何在脚本标记内制作Caja保留模板文本?

时间:2014-03-13 10:23:20

标签: google-apps-script handlebars.js google-caja icanhaz.js

我试图了解是否可以使用ICanHazHandlebars来构建Google文档插件的侧边栏。然而,事实证明Caja正在从我的脚本标签中剥离实际的HTML。有什么办法可以防止这种情况发生吗?

我们只是说我的Handlebars模板是这样的:

<script id="user" type="text/x-handlebars-template">
  <li>
    <p class="name">Hello I'm {{ name }}</p>
  </li>
</script>

然后,目前,在运行时它是这样的:

<script id="user-caja-guest-0___" data-caja-type="text/x-handlebars-template"></script>

所以,即使我能够使用$('#user").html()查找它,它也只会给我一个空模板。有没有办法阻止Caja这样做?

2 个答案:

答案 0 :(得分:2)

Caja目前不支持在任何情况下保留<script>元素的内容,并且还假设所有脚本文本都是JavaScript。这是可能的,但不值得支持。如果您需要此功能,请file a request for it

答案 1 :(得分:2)

这似乎适用于带有Caja的Handlebars.js。

模板标记(无脚本标记+隐藏div)

<div id="entry-template" class="header" style="display: none">
    <h1>{{title}}</h1>
    <div class="body">
      {{body}}
    </div>
</div>

然后你的脚本

var source = $("#entry-template").html();
var template = Handlebars.compile(source);
var context = {title: "My New Post", body: "This is my first post!"};
alert(template(context));

我们得到了

<h1>My New Post</h1>
<div class="body">
  This is my first post!
</div>