日期:2014-05-17  浏览次数:20539 次

html 实体字符值

首先什么是 html 实体可参见:HTML Entities ,所有的命名实体列举可见:html4 ,至今没啥变化,除了命名实体也可以使用数字实体,详见 html 实体编码问题 。



对于显示可以使用 html 实体,但是对于需要知道具体页面上实体的字符值,则有两个方法:


innerHTML :


将实体比如 © 设置为一个元素的html,再使用元素的该属性可获得实体真正的字符值,但是对于和 html 语法冲突的字符比如: (\u00a0) <(\u003c) >(\u003e) &(\u0026)则仍然保持原样


innerText & textContent


将实体比如 < 设置为一个元素的html,再使用元素的上述属性可获得实体真正的字符值,这时就可用 alert 或进一步记录到数据存储媒介。


demo :


html entity's character value

?

?

PS: 反向获得字符的实体值


对于和html语法相冲突的字符(< , > , &),如果想要实际显示则需要取得该字符的实体值(即转义 escape html 字符),有三种方法:

?

1. 本章前述方法的反过程

?

node.textContent&&node.textContent=str;
node.innerText&&node.innerText=str;

alert(node.innerHTML);
?

2. 创建文本节点

?

??? 和方法1实际上是同一种,强制把 html 特殊字符当做普通文本,再用 innerHtml 读出来

?

var str="<a>x</a>";
var div = doc.createElement('div'),
      text = doc.createTextNode(str);
div.appendChild(text);
alert(div.innerHTML); 

?

3. 正则式

?

???? 因为和 html 语法冲突的实际上就是 & , < ,> 那么我们只要正则一下就可以了,速度还最快

?

?

var value="<a>x</a>"
alert(String(value).replace(/&/g, "&amp;").replace(/>/g, "&gt;").replace(/</g, "&lt;").replace(/"/g, "&quot;"))

Refer

http://bytes.com/topic/javascript/answers/170794-trim-nbsp

?

http://www.ascii.cl/htmlcodes.htm

?

http://cn.18dao.net/Asc

?

?

?