脚本类型文本/模板包括脚本标记,忽略关闭的脚本标记。 以下是我的示例代码 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')
}());
答案 0 :(得分:1)
脚本标签的内容被视为纯文本。
因此,内部的<script>
起始标签被视为文本,而 first </script>
的结束标签被视为脚本元素的结尾。
由于没有匹配的打开脚本元素,第二个</script>
结束标签随后被丢弃。
使用<script>
元素作为放置模板的地方是肮脏的技巧。您刚刚发现了一个断裂点。
请考虑改用<template>
element。注意浏览器支持。