html转义什么时候使用?,JavaScript什么时候应该使用转义而不是encodeURI / encodeURIComponent?...

小编典典

escape()

不要使用它! escape()在B.2.1.2节中定义了转义,并且附件B的引言中指出:

…本附件中指定的所有语言功能和行为均具有一个或多个不良特征,在没有遗留用法的情况下,将从本规范中删除。…

…程序员不应该使用或编写新的ECMAScript代码时承担的这些功能和行为的存在....

特殊字符的编码除外:@ * _ +-。/

字符的十六进制形式(其代码单位值为0xFF或更小)是两位数字的转义序列:%xx。

对于具有较大代码单位的字符,将%uxxxx使用四位数格式。查询字符串(如RFC3986中所定义)中不允许这样做:

query = *( pchar / "/" / "?" )

pchar = unreserved / pct-encoded / sub-delims / ":" / "@"

unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"

pct-encoded = "%" HEXDIG HEXDIG

sub-delims = "!" / "$" / "&" / "'" / "(" / ")"

/ "*" / "+" / "," / ";" / "="

仅当百分号后接两个十六进制数字时才允许使用百分号,而百分号后接u则不允许。

encodeURI()

当您需要有效的URL时,请使用encodeURI。拨打电话:

encodeURI("http://www.example.org/a file with spaces.html")

要得到:

http://www.example.org/a%20file%20with%20spaces.html

不要调用encodeURIComponent,因为它会破坏URL并返回

http%3A%2F%2Fwww.example.org%2Fa%20file%20with%20spaces.html

encodeURIComponent()

当您想对URL参数的值进行编码时,请使用encodeURIComponent。

var p1 = encodeURIComponent("http://example.org/?a=12&b=55")

然后,您可以创建所需的URL:

var url = "http://example.net/?param1=" + p1 + "&param2=99";

您将获得以下完整的URL:

http://example.net/?param1=http%3A%2F%2Fexample.org%2F%Ffa%3D12%26b%3D55&param2=99

请注意,encodeURIComponent不会转义该'字符。一个常见的错误是使用它来创建html属性,例如href='MyUrl',可能会遇到注入错误。如果要从字符串构造html,请使用"而不是使用'属性引号,或添加额外的编码层('可以编码为%27)。

2020-04-23

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值