不一致的window.history.pushState uri编码

时间:2013-07-04 22:48:18

标签: javascript hyperlink pushstate uriencoding

获取网址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...超链接不会编码'@'符号。

1 个答案:

答案 0 :(得分: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"