对于有效 HTML,你的内联 JavaScript 应该是 HTML 转义的。
如果您要编写如下脚本:
<script type="text/javascript">
document.write('<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>');
</script>
会有一个问题,因为脚本包含</script>,它将关闭 first 开始脚本标记。旧的用户代理在 JavaScript 转义不佳方面存在各种问题,并且更容易告诉人们使用:
<script>
//<!--
//-->
</script>
与其说教人们写剧本,不如说:
<script type="text/javascript">
document.write('<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>');
</script>
请注意,JS cmets 用于阻止 JavaScript 引擎尝试执行 <!-- 和 -->,这可能是合法的语句(a<!--b 和 a-->b)。
比解释他们实际上需要将每个" 转为&quot;,&lt; 转为&lt;,&gt; 转为&gt; 和&amp; 转为&amp; .
对此的“现代”修复是使用字符数据元素,它告诉文档包含的所有内容都应视为文字:
<script type="text/javascript">
/* <![CDATA[ */
/* ]] */
</script>
在这种情况下,我使用了多行 cmets,以便在将代码缩小为单行时不会损坏代码(一些富文本编辑器过去曾对我这样做过)。
最好的解决方案是将所有 HTML 保存在 .html 文件中,将所有 CSS 保存在 .css 文件中,将所有 JS 保存在 .js 文件中。您永远不必担心 HTML 会转义您的 JavaScript,只需插入一个新的 <script>,您就可以在其他地方重用您的 JS。