如何在<;中正确转义内联Javascript;脚本>;标签?

如何在<;中正确转义内联Javascript;脚本>;标签?,javascript,html,xhtml,Javascript,Html,Xhtml,我正在为一个框架编写一个服务器端函数,该框架允许我内联一个Javascript文件。它以文件名作为输入,其输出如下: <script> /* contents of Javascript file */ </script> /*Javascript文件的内容*/ 如何安全地转义Javascript文件的内容? 如果文件包含类似的内容,我会特别担心。如果输入Javascript文件有语法错误,我仍然希望它正确转义。我还意识到,XHTML希望对某些实体进行编码,而

我正在为一个框架编写一个服务器端函数,该框架允许我内联一个Javascript文件。它以文件名作为输入,其输出如下:

<script>
   /* contents of Javascript file */
</script>

/*Javascript文件的内容*/
如何安全地转义Javascript文件的内容?

如果文件包含类似
的内容,我会特别担心。如果输入Javascript文件有语法错误,我仍然希望它正确转义。我还意识到,XHTML希望对某些实体进行编码,而HTML则没有

有很多类似的问题要问。但是我想要一些能够处理一般情况的东西,这样我就可以为一般情况编写一个工具


(我意识到内联可能不受信任的Javascript不是最好的主意,所以不需要花时间讨论。)

这是一项正在进行的工作,如果我错过了一个关键案例,请告诉我

答案是不同的,这取决于您使用的是XHTML还是HTML

1.带有
内容类型的XHTML:应用程序/XHTML+xml
标题 在这种情况下,您可以简单地对任何实体进行XML转义,将此文件转换为:

console.log("Example Javascript file");
console.log(1</script>2/);
console.log("That previous line prints false");
console.log(“示例Javascript文件”);
console.log(12/);
log(“前一行打印为false”);
为此:

<script>
console.log(&quot;Example Javascript file&quot;);
console.log(1&lt;/script&gt;2/);
console.log(&quot;That previous line prints false&quot;);
</script>

log(“示例Javascript文件”);
console.log(1/script2/);
log(“前一行打印为false”);
请注意,如果您使用的XHTML具有不同的
内容类型
标题,那么不同的浏览器可能会有不同的行为,我还没有对此进行研究,因此我建议修复
内容类型
标题

2.HTML 不幸的是,我知道在这种情况下没有办法正确地避开它(至少不解析Javascript)。用
\/
替换
/
的所有实例会导致一些Javascript中断,包括前面的示例


我所能推荐的最好方法是搜索
,只要知道转义的是脚本元素的主体。然后基于HTML5解析器算法,我认为用
替换
)实际上不必在XHTML中转义引号;转义
&
@Alohci:但是用
替换它是的。我明白你在说什么了。谢谢。HTML也可以使用
结束标记吗?您可以始终使用数据URI: