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

 

 

 

你可能感兴趣的:(html)