使用jquery读取外部脚本标记的内容

时间:2012-03-15 17:10:59

标签: javascript templates backbone.js underscore.js

加载骨干模板的常见模式如下:

<script type='text/template' id='foo'>
    my template
</script>

----
var whatever = $('#foo').html();

我想将脚本包含在外部文件中,如下所示:

<script type='text/template' id='foo' src='myTemplate.tpl'></script>

html()的{​​{1}}现在为空。

我看到浏览器拉下模板文件,但我不确定它是否在页面dom中。有没有一种简单的方法可以在javascript中引用脚本的内容,或者浏览器是否只是忽略它并抛出结果?

2 个答案:

答案 0 :(得分:2)

我认为要实际执行外部加载的脚本,你必须对内容进行eval()。您没有将它添加到DOM中,因为它是脚本,您将它添加到JS运行时。可能还有其他方法可以做到这一点,但eval()通常被认为是一个安全漏洞,因为可以评估恶意代码。

我倾向于在服务器上生成模板部分,所以当DOM准备就绪时,我知道我的所有JS都在那里。

答案 1 :(得分:1)

如果该点在加载脚本后执行操作,则可以在脚本标记上添加onload属性。如果要在运行时下载内容,则可以使用异步下载策略(如Gats指出)。

在外部文件中使用jquery模板模板时,请记住一些重要的事项,有一个有关外部文件的jquery模板的有趣article,你必须检查它。