如何在<;中正确转义内联Javascript;脚本>;标签?
我正在为一个框架编写一个服务器端函数,该框架允许我内联一个Javascript文件。它以文件名作为输入,其输出如下:如何在<;中正确转义内联Javascript;脚本>;标签?,javascript,html,xhtml,Javascript,Html,Xhtml,我正在为一个框架编写一个服务器端函数,该框架允许我内联一个Javascript文件。它以文件名作为输入,其输出如下: <script> /* contents of Javascript file */ </script> /*Javascript文件的内容*/ 如何安全地转义Javascript文件的内容? 如果文件包含类似的内容,我会特别担心。如果输入Javascript文件有语法错误,我仍然希望它正确转义。我还意识到,XHTML希望对某些实体进行编码,而
<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("Example Javascript file");
console.log(1</script>2/);
console.log("That previous line prints false");
</script>
log(“示例Javascript文件”);
console.log(1/script2/);
log(“前一行打印为false”);
请注意,如果您使用的XHTML具有不同的内容类型
标题,那么不同的浏览器可能会有不同的行为,我还没有对此进行研究,因此我建议修复内容类型
标题
2.HTML
不幸的是,我知道在这种情况下没有办法正确地避开它(至少不解析Javascript)。用\/
替换/
的所有实例会导致一些Javascript中断,包括前面的示例
我所能推荐的最好方法是搜索
,只要知道转义的是脚本元素的主体。然后基于HTML5解析器算法,我认为用替换)实际上不必在XHTML中转义引号;转义&
和@Alohci:但是用替换它是的。我明白你在说什么了。谢谢。HTML也可以使用
结束标记吗?您可以始终使用数据URI: