使用innerHTML获取零宽度非连接符()

时间:2018-02-08 14:51:41

标签: javascript

我正在尝试使用‌

获得innerHTML

输出应为

This div contains a zero-width‌‌non-joiner, a non-breaking space & an ampersand

但输出是:

This div contains a zero-width‌non-joiner, a non-breaking space & an ampersand

如何获得‌

alert(document.getElementsByTagName('div')[0].innerHTML)
<div>This div contains a zero-width&zwnj;non-joiner, a non-breaking&nbsp;space &amp; an ampersand</div>

小提琴:https://jsfiddle.net/yst1Lanv/

2 个答案:

答案 0 :(得分:1)

您的角色位于提取的(innerHTML)文本中,只是没有编码为HTML实体。

如果您愿意,可以将字符替换为其实体:

alert(document.getElementsByTagName('div')[0].innerHTML.replace(/‌/g, '&zwnj;'));
<div>This div contains a zero-width&zwnj;non-joiner, a non-breaking&nbsp;space &amp; an ampersand</div>

Yong Quan发布了一些比我更好的代码,如果你想让你的应用程序更易于维护使用unicode。我上面的正则表达式令人困惑,这更容易理解:

.replace(/\u200c/g, '&zwnj;')

答案 1 :(得分:1)

您可以使用其unicode \u200c进行搜索。然后将其替换为&zwnj;字符串。

&#13;
&#13;
alert(document.getElementsByTagName('div')[0].innerHTML.replace(/\u200c/g, '&zwnj;'))
&#13;
<div>This div contains a zero-width&zwnj;non-joiner, a non-breaking&nbsp;space &amp; an ampersand</div>
&#13;
&#13;
&#13;