为什么对href属性使用url编码而不是html编码



在这个bit.ly书签中,我看到他们正在使用url编码

  <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会有一个GET请求,该请求需要url编码,但在这种情况下不需要。

为什么会这样?

他们这样做是因为这是一个a标记。单击后,浏览器的URL解析器将解析href。任何被解析为URL的东西都需要进行URL编码。在这种情况下,它实际上只是JavaScript,浏览器会这样执行它,但解析器仍然需要一个URL编码的字符串来避免阻塞它。

最新更新