如何防止'&'的HTML编码将内容从div复制到页面标题时的字符?

时间:2015-04-10 13:24:57

标签: javascript html encoding character-encoding

我有一个div,其内容是My Home&管理
    <div id="abc"> My Home & Administration></div>

在脚本中,我需要将此div的内容复制到我的页面标题中。目前我正在使用innerHTML属性来编码值。

<script type="text/javascript>
var id = document.getElementById("abc");
document.title = id.innerHTML;
</script>

标题显示为我的家&amp;放大器;施用 (注意:忽略&amp;和amp;之间的空格)

是否有任何替代方式显示标题? 我不能使用JQuery或任何框架,除了简单的Javascript

另请注意,这不是URL编码,而是将字符转换为HTML实体。

1 个答案:

答案 0 :(得分:3)

您可以使用.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会返回"Foo bar baz",因此会忽略strong代码。

相比之下,.innerHTML将返回"Foo <strong>bar</strong> baz"

同样适用于:

<div id="abc">Foo&amp;Bar</div>

.textContent将为"Foo&Bar".innerHTML将为"Foo&amp;Bar"