如何防止“&”字符的HTML编码,同时从一个div的内容复制到页面的标题?(How do I pre

2019-10-22 14:10发布

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

在脚本中,我需要这个div的内容复制到我的网页标题。 目前我使用的编码值innerHTML属性。

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

标题显示为我的家庭和放大器; 管理局 (注:无视之间及和放大器的空间;)

是否存在这样的标题显示为任何替代办法? 我无法从纯粹和简单的JavaScript使用JQuery或任何框架,除了

另外请注意,这不是URL编码,而是转换字符到他们的HTML实体。

Answer 1:

您可以使用.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"



文章来源: How do I prevent HTML encoding of '&' characters while copying content from a div to the title of the page?