Javascript 为什么可以';t a<;脚本>;块包含一个带单词“quot”的字符串常量</脚本>&引用;在…内
好的,这纯粹是出于好奇:我希望以下标记在HTML文档中有效:Javascript 为什么可以';t a<;脚本>;块包含一个带单词“quot”的字符串常量</脚本>&引用;在…内,javascript,html,Javascript,Html,好的,这纯粹是出于好奇:我希望以下标记在HTML文档中有效: var test=“为什么? "; HTML解析器对JavaScript一无所知。它不知道第一个在字符串文本中。它看到的只是第一个,并认为这会关闭块 下面是一个可能更相关的JavaScript示例: var foo = "He said: "Let's go!""; JavaScript解析器对人类对话的文本表示一无所知(例如,我们通常将“speech”放在引号中)。它只看到第二个引号,并认为这终止了字符串文字。但是这不是我们想
var test=“为什么?
";
HTML解析器对JavaScript一无所知。它不知道第一个
在字符串文本中。它看到的只是第一个
,并认为这会关闭块
下面是一个可能更相关的JavaScript示例:
var foo = "He said: "Let's go!"";
JavaScript解析器对人类对话的文本表示一无所知(例如,我们通常将“speech”放在引号中)。它只看到第二个引号,并认为这终止了字符串文字。但是这不是我们想要的,所以我们必须通过转义内部引号来帮助解析器
相关:您只需要转义
/
字符
<script>
var test = "<script>why?<\/script>";
</script>
var test=“为什么?”;
HTML引擎和JavaScript引擎是两个不同的东西。首先,HTML引擎解析文档。然后,它将JavaScript代码块传递给JavaScript引擎。(以及CSS引擎的CSS代码,等等。)
由于HTML不知道JavaScript语法,它将结束标记视为整个内容的一部分,并愉快地将标记的内容传递给JavaScript引擎:
<script>
var test = "<script>why?
</script>
var test=“为什么?
更具体地说,如果您按照解析规则开始
将我们置于“脚本数据状态”如何?var test=“why?”;
?重复。在这里回答:“链接到一个规范”一旦解析器输入了
标记,它就处于“脚本数据状态”“。对于查找
的真正细节,@JamesThorpe如果您将此作为答案发布,我会接受itQ在查找规范的相关部分时被欺骗:)为什么“相关”不是重复的?或者?@MikeMcCaughan:我觉得另一个问题不能很好地解释为什么脚本块在第一次出现
时终止。但是如果这个问题的答案只是因为它关闭了脚本块,那么当然,它是重复的。你能添加James Thorpe在他对我的问题的评论中发布的W3C规范的链接吗(这只是为了增强答案)?@GyumFox:好建议,我更新了答案。我以前从未真正看过规范的这一部分,跟随它是很有趣的。谢谢