为什么使用url编码代替href属性的html编码?

问题描述:

在此bit.ly书签我看到他们使用的URL编码为什么使用url编码代替href属性的html编码?

<a title="✚ Bitlink" href="javascript:(function()%20%7B%20var%20s%20=%20document.createElement(%22script%22);%20s.setAttribute(%22id%22,%20%22bitmark_js%22);%20s.setAttribute(%22type%22,%20%22text/javascript%22);%20s.setAttribute(%22src%22,%20%22//bitly.com/a/bitmarklet.js%22);%20(top.document.body%20%7C%7C%20top.document.getElementsByTagName(%22head%22)[0]).appendChild(s);%20%7D)();" id="bitmarklet">✚ Bitlink</a></p> 

然而,因为它实际上是JavaScript不会由URL代理,我不明白他们为什么选择这个编码进行处理。

通常情况下,href会有一个需要url编码的GET请求,但在这种情况下不会。

这是为什么?

他们这样做是因为这是一个a标签。点击后,href将被浏览器的URL解析器解析。任何被解析为URL的内容都需要进行URL编码。在这种情况下,它确实只是JavaScript,浏览器将按照这种方式执行它,但解析器仍然需要URL编码的字符串才能阻止它。

+0

我会假设在看到'javascript'时,它会停止将其解析为URL。这是解释语言的错误或缺陷。 –