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

cap*_*aig 7 javascript templates backbone.js underscore.js

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

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

----
var whatever = $('#foo').html();
Run Code Online (Sandbox Code Playgroud)

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

<script type='text/template' id='foo' src='myTemplate.tpl'></script>
Run Code Online (Sandbox Code Playgroud)

但是html()foo现在是空的.

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

Fla*_*ape 2

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

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