在将内容从 div 复制到页面标题时,如何防止 HTML 对“&”字符进行编码?
How do I prevent HTML encoding of '&' characters while copying content from a div to the title of the page?
我有一个 div 其内容是我的主页和管理
<div id="abc"> My Home & Administration></div>
在脚本中,我需要将这个div的内容复制到我的页面标题中。目前我正在使用 innerHTML 属性 对值进行编码。
<script type="text/javascript>
var id = document.getElementById("abc");
document.title = id.innerHTML;
</script>
标题显示为我的家&管理
(注:忽略&和amp;之间的space)
有没有其他方法可以让标题按原样显示?
我不能使用 JQuery 或除了纯粹和简单的任何框架 Javascript
另请注意,这不是 URL 编码,而是将字符转换为其 HTML 实体。
您可以使用 .textContent
而不是 .innerHTML
。
.innerHTML
实际上不是 DOM 规范的一部分。大多数浏览器都将其作为非标准功能提供。 .innerHTML
.
有几个问题
由于您对节点的实际文本值感兴趣,因此可以使用 .textContent
。
知道 div
abc 实际上有一个节点,一个 TextNode
,它保存值可能是有用的。 div
本身实际上并没有保存值。如果您要遍历 DOM,您会看到这个文本节点。
如果您的 HTML 是:
<div id="abc">Foo <strong>bar</strong> baz</div>
您的结构将是:
`div`:abc
TextNode Foo
`strong`
TextNode bar
TextNode baz
在这种情况下 abc.textContent
将 return "Foo bar baz"
所以它会忽略 strong
标签。
相比之下 .innerHTML
将 return "Foo <strong>bar</strong> baz"
同样适用于:
<div id="abc">Foo&Bar</div>
.textContent
将是 "Foo&Bar"
,.innerHTML
将是 "Foo&Bar"
我有一个 div 其内容是我的主页和管理
<div id="abc"> My Home & Administration></div>
在脚本中,我需要将这个div的内容复制到我的页面标题中。目前我正在使用 innerHTML 属性 对值进行编码。
<script type="text/javascript>
var id = document.getElementById("abc");
document.title = id.innerHTML;
</script>
标题显示为我的家&管理 (注:忽略&和amp;之间的space)
有没有其他方法可以让标题按原样显示? 我不能使用 JQuery 或除了纯粹和简单的任何框架 Javascript
另请注意,这不是 URL 编码,而是将字符转换为其 HTML 实体。
您可以使用 .textContent
而不是 .innerHTML
。
.innerHTML
实际上不是 DOM 规范的一部分。大多数浏览器都将其作为非标准功能提供。 .innerHTML
.
由于您对节点的实际文本值感兴趣,因此可以使用 .textContent
。
知道 div
abc 实际上有一个节点,一个 TextNode
,它保存值可能是有用的。 div
本身实际上并没有保存值。如果您要遍历 DOM,您会看到这个文本节点。
如果您的 HTML 是:
<div id="abc">Foo <strong>bar</strong> baz</div>
您的结构将是:
`div`:abc
TextNode Foo
`strong`
TextNode bar
TextNode baz
在这种情况下 abc.textContent
将 return "Foo bar baz"
所以它会忽略 strong
标签。
相比之下 .innerHTML
将 return "Foo <strong>bar</strong> baz"
同样适用于:
<div id="abc">Foo&Bar</div>
.textContent
将是 "Foo&Bar"
,.innerHTML
将是 "Foo&Bar"