HTML编码、innerHTML、innerText与URL编码

HTML编码字符集

为了让浏览器知道页面应该显示什么,必须要给页面一个明确的字符集用于浏览器编码解码。通常,我们都用utf-8字符集。如<meta charset="UTF-8">来指定页面所用的字符集。这样一来,浏览器可以根据utf-8字符集来显示内容。
点击这里先展示一下HTML特殊字符与字符实体对照表。

浏览器对HTML标签内的特殊字符解析时,为什么直接写特殊字符也行,写特殊字符对应的字符实体也行?
innerHTML的用法或jQuery的html()
设置:innerHTML或html(arg:string)

在为DOM节点的innerHTML赋值或jQuery对象调用html(arg: string)时,浏览器会对赋值的字符串(html()方法的字符串参数)进行解析,生成DOM树,因此页面标签结构会变化(虽然从页面外观上可能看不出来)。

获取:innerHTML或html()

在用DOM节点的innerHTML获取值或调用html()不传入参数时,浏览器会对该DOM节点下的DOM树进行序列化后返回,序列化的过程中按如下两个规则:

  • DOM树中的标签节点不进行编码,按原样返回,甚至浏览器会判断传入的不完整标签,自动补齐后按原样返回;
  • 其他特殊字符进行编码(即特殊字符会转换为字符实体),将编码后的字符串返回。
innerText的用法
设置:innerText或text(arg:string)

在为DOM节点的innerText赋值或jQuery对象调用text(arg: string)时,浏览器不会对该赋值的字符串(或text()方法的参数字符串)进行解析,只是把该字符串作为文本节点的值。

获取:innerText或text()

在用DOM节点的innerText获取值或调用text()不传入参数时,浏览器获取该DOM节点下的文本节点值,直接返回,不进行任何序列化(即不会对特殊字符编码)

一个用于escape字符串防止XSF攻击的方法

function decodeHtml(str) {
	// 创建一个文档片段;
	var div = document.createElement('div');
	// 将div元素的HTML内容设定为str,该str会被浏览器解析为文档片段树;
	div.innerHTML = str || '';
	// 返回div元素下的所有文本节点值,这样避免了str里面包含的标签,因为包含的标签已经被上一步解析过了,innerText不会返回解析过的元素节点。
	return div.innerText;
}

URL编码

默认采用UTF-8来编码路径部分和查询字符串部分。IE浏览器可能查询字符串部分采用了其他方式来编码;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值