2015-11-15 58 views
1

在此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請求,但在這種情況下不會。

這是爲什麼?

回答

1

他們這樣做是因爲這是一個a標籤。點擊後,href將被瀏覽器的URL解析器解析。任何被解析爲URL的內容都需要進行URL編碼。在這種情況下,它確實只是JavaScript,瀏覽器將按照這種方式執行它,但解析器仍然需要URL編碼的字符串才能阻止它。

+0

我會假設在看到'javascript'時,它會停止將其解析爲URL。這是解釋語言的錯誤或缺陷。 –