2015-11-15 2 views
1

Dans ce signet bit.ly je vois qu'ils utilisent le codage URLPourquoi utiliser le codage url au lieu du codage html pour l'attribut href?

<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> 

Cependant, comme il est réellement et JavaScript ne va pas être traitée par l'agent d'URL Je ne comprends pas pourquoi ils ont choisi ce codage.

Normalement, un href aurait une requête GET qui nécessiterait un encodage d'URL, mais pas dans ce cas.

Pourquoi est-ce?

Répondre

1

Ils le font parce que c'est un tag a. Une fois cliqué, le href sera analysé par l'analyseur d'URL du navigateur. Tout ce qui est analysé en tant qu'URL doit être codé en URL. Dans ce cas, il s'agit en effet simplement de JavaScript et le navigateur l'exécute en tant que tel, mais l'analyseur a toujours besoin d'une chaîne codée par URL pour ne pas l'étouffer.

+0

Je supposerais qu'en voyant 'javascript' il arrêterait de l'analyser comme une URL. C'est un bug ou une lacune dans la façon dont le langage est interprété. –