我有一个使用jquery的单页web应用程序和一组嵌入式模板。模板可能包含如下标签:
<script type="html/template" id="sample">
<script type="text/javascript" charset="utf-8">alert('x');</script>
</script>检索模板的jquery代码是
$("#sample").html();上面jquery命令的输出是
<script type="text/javascript" charset="utf-8">alert('x');而不是
<script type="text/javascript" charset="utf-8">alert('x');</script>如何修复此输出?
发布于 2012-03-05 20:23:13
<script>中的所有内容都应该是脚本,而不是HTML。
浏览器会看到:
<script type="html/template" id="sample">
并开始解释随后显示为脚本的所有内容,当它到达内部<script时,它被视为只是文本。
例外的是浏览器正在寻找</script>,以便将上下文从脚本切换到HTML.因此,当它在以下位置看到第一个</script>时:
<script type="text/javascript" charset="utf-8">alert('x');</script>
它假定打开的脚本块已完成,并切换回预期的HTML,并将外部脚本节点的内容正确设置为:
<script type="text/javascript" charset="utf-8">alert('x');
您可以在服务器上实现您想要做的事情并在服务器上进行解析,也可以使用不同的模板方法。
发布于 2012-03-05 20:21:23
我不确定这会对你有帮助。
var a = $("#sample").html() +'</'+'script>';
alert(a);发布于 2012-03-05 20:34:13
HTML中不允许嵌套的script标记,如果通过validator运行嵌套脚本,将会出现Stray end tag script错误。
您需要转义脚本标记,或者使用其他元素作为模板语法的持有者元素。
https://stackoverflow.com/questions/9566195
复制相似问题