强制html将“”解释为文本节点

时间:2014-02-25 19:49:50

标签: html dom whitespace line-breaks

[[编辑存档]]

如果你想让一个div认为它有一个字符,那么你可以在其父元素上输入contenteditable == true时输入它,看到这个链接: type in empty divs while contenteditable = true?

[[原始问题]]

我正在尝试在我的html中插入“ ”,但在解析之后它会打印为“”

我得到--- <div>" some text"</div>
我想-------&gt; <div>"&nbsp;some text"</div>(其中&nbsp;是文本节点)

我试过插入
"&nbsp;"
String.fromCharCode(160)
document.createTextNode('\u00A0')
但没有雪茄

Dom专家请赐教。

修改
当我说我希望它是一个&nbsp;节点时,我想说的是我希望&nbsp出现在开发者控制台的dom中。我注意到" "&nbsp;的行为不同,因为浏览器似乎不认为" "包含任何字符

EDIT2
这是我的dom在两个案例的chrome开发人员工具[元素选项卡]上的样子 img

只是假装这些块是div

第二个div报告有innerHTML = "&nbsp;"
而第一个div甚至没有innerHTML属性

而且我知道你会像“我们说的那样!”使用"&amp;nbsp;",但是当我这样做时,浏览器打印字符串"&nbsp;"而不是创建非中断空间

编辑3 确定大家都不要试图回答我的愚蠢问题了。我正在使用一个contenteditable div并制作一个自定义函数,当用户按下回车键时插入一个新的div。我构造了一个outerHTML字符串,其中包含中间带&nbsp;的div标记。问题是html会将&nbsp;解释为" ",除非您直接设置innerHTML = "&ampnbsp;"。这可能是因为当我创建字符串时:

var nbsp = "&ampnbsp;";
string "<div>+nbsp+</div>

...以便我可以编辑outerHTML,javascript会将"&ampnbsp;"重新解释为" "

因此,对于一般情况,Maxime Lorant和Mathew MacLean的答案将起作用......对我而言,但我必须先做一些额外的工作。

我疯了吗?

谢谢大家的帮助

2 个答案:

答案 0 :(得分:2)

尝试这个偷偷摸摸的小工作。

 <div>"&amp;nbsp;some text"</div> 

这也得到了回答: How to write out HTML entity name (&nbsp;, &lt;, &gt;, etc)

答案 1 :(得分:1)

如果要显示HTML实体,则需要使用自己的HTML实体转义&&amp;

 &amp;nbsp;     ---> &nbsp;
 &amp;eacute;   ---> &eacute;
 ...