日期:2014-05-17 浏览次数:20605 次
首先什么是 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, "&").replace(/>/g, ">").replace(/</g, "<").replace(/"/g, """))
http://bytes.com/topic/javascript/answers/170794-trim-nbsp
?
http://www.ascii.cl/htmlcodes.htm
?
http://cn.18dao.net/Asc
?
?
?