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

时间:2015-11-15 15:41:25

标签: javascript html url encoding bookmarklet

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

  <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请求,但在这种情况下不会。

为什么会这样?

1 个答案:

答案 0 :(得分:1)

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