脚本类型模板包含脚本标签

时间:2019-02-25 10:55:42

标签: javascript templates

脚本类型文本/模板包括脚本标记,忽略关闭的脚本标记。 以下是我的示例代码 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 个答案:

答案 0 :(得分:1)

脚本标签的内容被视为纯文本。

因此,内部的<script>起始标签被视为文本,而 first </script>的结束标签被视为脚本元素的结尾。

由于没有匹配的打开脚本元素,第二个</script>结束标签随后被丢弃。


使用<script>元素作为放置模板的地方是肮脏的技巧。您刚刚发现了一个断裂点。

请考虑改用<template> element。注意浏览器支持。