首先什么是 html 实体可参见:HTML Entities ,所有的命名实体列举可见:html4 ,至今没啥变化,除了命名实体也可以使用数字实体,详见 html 实体编码问题 。
对于显示可以使用 html 实体,但是对于需要知道具体页面上实体的字符值,则有两个方法:
将实体比如 © 设置为一个元素的html,再使用元素的该属性可获得实体真正的字符值,但是对于和 html 语法冲突的字符比如: (\u00a0) <(\u003c) >(\u003e) &(\u0026)则仍然保持原样
将实体比如 < 设置为一个元素的html,再使用元素的上述属性可获得实体真正的字符值,这时就可用 alert 或进一步记录到数据存储媒介。
demo :
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, "&").replace(/>/g, ">").replace(/</g, "<").replace(/"/g, """))
http://bytes.com/topic/javascript/answers/170794-trim-nbsp
http://www.ascii.cl/htmlcodes.htm