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