我在设置►
时尝试使用document.title
,但它没有呈现播放符号,只显示了相同的字符。
我可以将▶直接粘贴到代码中,这样可行。我只是好奇为什么第一种方法不起作用。
谢谢!
答案 0 :(得分:8)
►
是HTML实体引用,但document.title
不包含HTML;它包含纯文本。例如,如果我将document.title
设置为<strong>Hello</strong> <em>world</em>
,则会按字面显示,而不是显示 Hello world 。任何其他HTML都是如此,包括实体引用。
要明确,可以在title
标记中包含实体引用。解析页面时将解释它们。但是,document.title
在解析文本并替换所有实体后访问该文本。 document.title
将访问title
标记的文本,而不是最初用于创建它的HTML内部的HTML。同样,设置document.title
不会自动解释其中的任何HTML。
如果浏览器出于某种原因使用不同的字符编码来解释您的页面而不是实际的格式,那么在字面上包含字符可能会导致问题.HTML实体在HTML中防止这种情况,但也有一种方法可以在JavaScript中转义它们。特别是,您可以使用字符串escape \u25ba
在JavaScript中包含►。 (9658 10 转换为基数16是26BA 16 )
答案 1 :(得分:6)
other answer是正确的,因为HTML文档的标题是纯文本,不能包含标记。
但是,要明确,您可以在HTML源代码中使用►
(即<title>►</title>
)。 解析器会将实体转换为存储在DOM中的字符串中的正确字符。
设置document.title
时,您遇到了问题。即使脚本在HTML文档中内联,HTML解析器也不适用于JavaScript。您的脚本只是将文档的纯文本标题设置为文字ampersand-pound-9658-semicolon,因为该字符序列在脚本中没有特殊含义。
如果要转义脚本源中的字符,请使用JavaScript escape sequence。 JavaScript中的Unicode转义序列需要Unicode代码点的十六进制表示,并且您的实体使用十进制表示(9568)。转换为十六进制,我们得到25BA:
document.title = '\u25ba Playing';