Escape </脚本标记内容

在HTML中,标签和实体不在<script>标签中分析,并且</立即结束标签。 从而,

<script><b>fun &amp; things</

会给你一个脚本标签,其中包含<b>fun &amp; things <b>fun &amp; things

如果你包含JSON并且你想在你的脚本中包含字符</ ,那么你可以用</来替换它,因为这些字符只出现在字符串中, /是一个转义序列变成一个单一的正斜杠。

但是,如果你不使用JavaScript,那么这个技巧就不起作用。 在我的例子中,我试图在源代码中插入一个<script type="math/tex"> ,以便MathJax能够处理它。 有没有一种方式来逃避</在原来的HTML源代码? (我没有特定需要</但我正在写一个通用的工具,并希望使人们有可能用任何文本。)

(可以在JavaScript中创建脚本标记并填充其innerText ,但我正在处理原始HTML,因此我无法做到这一点。)


在HTML中,与XHTML相反, script元素的内容作为纯文本进行处理,除了结束标记的出现外,所以</结束处理并且必须在符合的文档中启动结束标记</script> 。 没有通用的机制来避免这种情况。 任何绕过这个特征的方法都不可避免地依赖于元素内使用的“语言”。 “语言”一词在这里引用,因为内容可以是任何东西,只要您的代码可以解析和处理它。

所以:没有一般的机制,但对于JavaScript以外的内容或某些浏览器识别的少数其他客户端脚本语言,您可以制定自己的规则。


我来到这里寻找一种通用的方法来在JavaScript代码中进行</script>转义。

经过一番研究之后,我发现如果您试图在JavaScript代码中转义</script> ,以便它可以安全地嵌入到<script></script>标记之间的html中,您应该用</script替换</script </script</script 。 这样做比较安全,因为如果用</script替换它,你可能会像这样破坏JavaScript代码: var q = -1</script/.test("script"); </script var q = -1</script/.test("script");

要小心,不要找</script>而是</script因为</script asdasdas>将结束你的脚本一样好</script>一样。

对不起,这对Ben Alpert没有任何帮助。 接受的答案是绝对正确的,您需要知道什么构造在您的<script></script>具有合法的语言才能知道如何在不制动代码的情况下转义</script>情况。


更多的HTML编码可能有帮助? &lt;<

很难知道你在做什么。 如果您不确定脚本标记之间的内容可能是什么样的(看起来您可能试图将其用作某种模板的持有者),那么您可以/应该使用CDATA部分:

<script><![CDATA[<b>fun &amp; things</b>]]></script>

这应该做到这一点。 更多的描述可以帮助给出更好的答案:)

链接地址: http://www.djcxy.com/p/75791.html

上一篇: Escape </ in script tag contents

下一篇: Align text to the bottom of a div