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