2

取url地址www.somesite.com/@user1

<a href...如果我单击包含该链接的老式超链接,则地址栏中的@百分比编码为%40

如果我使用 html5 的window.history.pushstate("object or string", "Title", 'www.somesite.com/@user1')@则不包含 - 它显示为 '@' 字符。

这种不一致让我很困扰。也许有办法使行为一致?

我已经考虑encodeURIComponent('www.somesite.com/@user1')过 pushstate url,但这也编码了“/”,我希望<a href...超链接不编码“@”符号。

4

1 回答 1

0

使用 encodeURIComponent 使 javascript 假定没有特殊的 HTTP 字符可以忽略。首先提取compnenet:

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