Javascript 为什么▶;无法在document.title中工作

Javascript 为什么▶;无法在document.title中工作,javascript,Javascript,我试着使用►设置document.title时,它没有呈现播放符号,只是显示了相同的字符 我能粘贴▶ 直接输入代码,这是有效的。我只是好奇为什么第一种方法行不通 谢谢 和#9658是一个HTML实体引用,但文档。title不包含HTML;它包含纯文本。例如,如果我将document.title设置为Helloworld,它将逐字显示,而不是显示Helloworld。这同样适用于任何其他HTML片段,包括实体引用 为了清楚起见,您可以在title标记中包含实体引用。解析页面时将对其进行

我试着使用
设置
document.title
时,它没有呈现播放符号,只是显示了相同的字符

我能粘贴▶ 直接输入代码,这是有效的。我只是好奇为什么第一种方法行不通

谢谢

和#9658
是一个HTML实体引用,但
文档。title
不包含HTML;它包含纯文本。例如,如果我将
document.title
设置为
Helloworld
,它将逐字显示,而不是显示Helloworld。这同样适用于任何其他HTML片段,包括实体引用

为了清楚起见,您可以在
title
标记中包含实体引用。解析页面时将对其进行解释。但是,
document.title
在解析文本并替换所有实体后访问文本
document.title
将访问
title
标记的文本,而不是其内部最初用于创建标记的HTML。同样,设置
document.title
也不会自动解释其中的任何HTML

如果浏览器出于某种原因使用与实际不同的字符编码来解释页面,则按字面意思包含字符可能会导致问题。HTML实体在HTML中可以防止这种情况,但也有一种方法可以在JavaScript中转义它们。特别是,您可以包括► 在JavaScript中,使用字符串escape
\u25ba
。(965810转换为base 16是26BA16)

HTML文档的标题是纯文本,不能包含标记,这是正确的

但是,为了清楚起见,您可以使用
►(即,
►;
)。解析器将把中的实体转换为存储在DOM中的字符串中的正确字符

设置
document.title
时遇到了一个问题。HTML解析器不适用于JavaScript,即使脚本内嵌在HTML文档中。您的脚本只是将文档的纯文本标题设置为文字符号和-pound-9658-分号,因为该字符序列在脚本中没有特殊意义

如果要转义脚本源中的字符,请使用JavaScript。JavaScript中的Unicode转义序列需要Unicode代码点的十六进制表示,您的实体使用的是十进制表示(9568)。转换为十六进制,我们得到25BA:

document.title = '\u25ba Playing';

为什么您希望浏览器对这些符号的解释与普通文本不同?@jahroy:如果您对字符编码不小心,很多事情可能会出错。为了便于查看,您应该使用JS(而不是
…BA
)来获取符号(▶) 以在页面和浏览器标题中更一致地显示。有关详细信息,请参见我的SO或。@d--b:简而言之,因为它只是另一个字符。JavaScript使用Unicode,它定义了一大组字符,不仅包括像
a
1
@
这样的字符あ
,但也有可能希望出现在文本中的其他符号,如
。这些符号不需要HTML的任何特殊支持;HTML实体的存在是为了使键入更容易(同时也为了防止编码问题)。如果您喜欢
a;
,您甚至可以将
a
编码为一个实体。如果它是您正在使用的字符集的一部分(如UTF-8等),则它是“允许的”。如果是另一个字符集,它可能会显示为另一个符号,因为字符本身在内部只是一个数字表示。抱歉,请崩溃。不要将Javascript(UTF-16)与HTML(可以进行不同的编码)混淆顺便说一句,哇,自从我第一次投票时,这个答案肯定扩大了。哈哈,谢谢!我注意到这个符号实际上是不同的,这应该是吗?它看起来更短(更小的高度)而不是使用符号本身……这可能是因为标题显示在浏览器HTML的上下文之外,并且使用了不同的字体。@d-u-b,我也有同样的问题。YouTube似乎使用unicode字符以获得更好的结果。请参阅我的SO Q/a或