[英]Weird window.open behaviour
此代码在Chrome上表现得很有趣( 在这里小提琴):
try {
open('6:-=');
} catch(e) {}
首先,尽管代码被包装在try-catch中,但仍会抛出错误:
无法打开包含无效网址'%36:%04- ='的窗口。
其次,在URL中插入无关字符,即%3
和%04
。
为什么try-catch没有拦截错误,为什么URL有这些额外的字符?
try
/ catch
没有任何效果,因为它不是例外。 它只是打印到控制台的错误消息 。 你可以证明:
open('6:-=');
console.log(1); // logged as usual
基本上,它就像console.error()
也没有抛出异常,但它会向控制台输出类似异常的消息。
您的小提琴包含一个不可打印的字符,其中包含6:-=
ASCII码4 6:-=
冒号后面的字符串,在显示的错误中以URL编码为%04
。 此外,提供的URL的6:
部分被解释为URL方案,不能以数字开头,因此显然Chrome网址引用6也为%36
,尽管RFC没有规定这种行为。
第一:正如pimvdb所说,这是因为它实际上并不是例外。
第二:%04是由JSFiddle插入的不可见字符。 %36是Chrome为URL方案编码时转换为%36的数字6。 更新了没有%04的小提琴
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.