问题描述
脚本类型文本/模板包括脚本标签,忽略关闭的脚本标签。 以下是我的示例代码Html
<div id="container">
</div>
<script id="template" type="text/template">
<script>
(function () {
alert('@Replacement')
}());
</script>
</script>
JS
var template = $("#template").html();
template = template.replace("Replacement", "Hi");
$('#container').text(template);
我希望在运行javascript之后页面上显示以下内容
<script>
(function () {
alert('@Replacement')
}());
</script>
但由于以下原因而被忽略:
<script>
(function () {
alert('@Replacement')
}());
1楼
Quentin
1
已采纳
2019-02-25 10:59:56
脚本标签的内容被视为纯文本。
因此,内部的<script>开始标记被视为文本,而第一个 </script>结束标记被视为script元素的结尾。
然后,第二个</script>结束标记将被丢弃,因为没有匹配的打开脚本元素。
使用<script>元素作为放置模板的地方是肮脏的。
您刚刚发现了一个断裂点。
考虑改用 。 注意浏览器支持。