HTML 实体字符处理-再探 jQuery 的 text()、html()

作者:vkvi 来源:ITPOW(原创) 日期:2019-8-13

其实 jQuery 的 text() 是对 value、innerText 的封装,而 html() 是对 innerHTML 的封装。请参见 text()、html()、val() 的差异

之前我们探讨过这个问题,但是由于里面涉及内容比较多,反而显得很杂,今天就只说取值这个问题。

当一个 div 中有如下字符时,text()、html() 取值效果分别如下:

源代码

显示

text()

html()

>>

>> 

>> 

>>

<&lt;

<< 

<< 

&lt;&lt;

&&amp;

&&

&&

&amp;&amp;

<b>b</b>

b(加粗)

b

<b>b</b>

| |&nbsp;|

| | |

| | |

| |&nbsp;|

"&quot;

""

""

""

'&apos;

''

''

''

text() 可以这样总结:

就是从浏览器看到的样子(加粗这些没办法)。

html() 可以这样总结:

1、>、&gt;、<、&lt;、&、&amp;  取出来就是从浏览器看到的样子进行 HtmlEncode。这里 >、< 指不完整的 HTML 标签,理论上应该是杜绝的,如果排除 >、<、&,实际上取出来就是源码的样子

2、完整的 HTML 标签、空格、&nbsp;,取出来就是源码的样子

3、"、&quot;、'、&apos;,取出来就是从浏览器看到的样子

头大了,为什么要搞这么复杂呢?

如果不是 div,而是 textarea,则除了 <b>b</b> 那里不一样,其他都一样,其实在 textarea 中直接写 <b> 也是不规范的做法,理念上应该是杜绝的,如果规范写法,实际上取出来就是源码的样子。

源代码

显示

text()

html()

<b>b</b>

<b>b</b>

<b>b</b>

&lt;b&gt;b&lt;/b&gt;



相关文章