Hasty Briefsbeta

双语

Every JavaScript bundler handles inline script tags wrong

7 days ago
  • #Web Development
  • #HTML
  • #JavaScript
  • JavaScript可以通过外部文件(使用带有src属性的<script>标签)或在<script>标签内联的方式嵌入到网页中。
  • 内联的<script>标签越来越多地用于自包含的应用程序和HTML工件,但也存在一些陷阱,比如字符串'</script>'可能会提前结束脚本。
  • HTML规范中包含一个“脚本数据双重转义状态”的漏洞,其中像<!--后跟<script>这样的序列可以阻止正常的脚本终止。
  • JavaScript构建工具和压缩工具在处理内联<script>标签中文字和表达式里有问题的字符串(如</script>、<!--)时,常常无法正确地处理转义。
  • 在测试的工具中,ESBuild表现最佳,但在文字中仍无法转义<!--;其他工具如Terser、SWC、Oxc、Bun、UglifyJS、Closure Compiler和minify等也在不同方面存在失败。
  • 目前没有JavaScript构建工具能够正确处理内联<script>标签的所有情况,这凸显了需要更好地认识和处理这些边缘情况。