Escape </脚本标记内容
在HTML中,标签和实体不在<script>
标签中分析,并且</
立即结束标签。 从而,
<script><b>fun & things</
会给你一个脚本标签,其中包含<b>fun & things
<b>fun & 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编码可能有帮助? <
为<
。
很难知道你在做什么。 如果您不确定脚本标记之间的内容可能是什么样的(看起来您可能试图将其用作某种模板的持有者),那么您可以/应该使用CDATA部分:
<script><![CDATA[<b>fun & things</b>]]></script>
这应该做到这一点。 更多的描述可以帮助给出更好的答案:)
链接地址: http://www.djcxy.com/p/75791.html