2

URLアドレスを取るwww.somesite.com/@user1

リンクを含む古き良き<a href...ハイパーリンクをクリックすると、アドレスバーに@パーセントエンコードされます。%40

html5 を使用する場合window.history.pushstate("object or string", "Title", 'www.somesite.com/@user1')、エンドック化されて@ません。代わりに「@」文字として表示されます。

この矛盾は私を悩ませます。おそらく、動作を一貫させる方法はありますか?

プッシュステート URL について検討しましたが、これは「/」もエンコードします。ハイパーリンクが「@」記号をエンコードしないencodeURIComponent('www.somesite.com/@user1')ことを望んでいます。<a href...

4

1 に答える 1

0

encodeURIComponent を使用すると、javascript は、無視する特別な HTTP 文字がないと想定します。最初にコンポーネントを抽出します。

var url = "www.somesite.com/@user1";
var atPos = url.indexOf('@');
var urlComp= url.slice(atPos);  //@user1
url = url.slice(0, atPos);
url += encodeURIComponent(urlComp); //"www.somesite.com/%40user1"
于 2013-07-04T23:53:57.547 に答える