2014-01-09 39 views
2

我尝试通过javascript在浏览器的地址栏中删除部分网址。如何在浏览器的地址栏中删除部分网址

但我不明白为什么它不工作,如果我在控制台中测试它的结果是正确的,但它仍然不会在地址栏中更改。

我该怎么办?

网址我:http://localhost:8090/Home/Index?x=72482&success=itsdone

网址我想要的是:

http://localhost:8888/Home/Index?x=72482 

这里是我的javascript代码:

window.location.href.replace('&', '#'); 
window.location.hash = ""; 
+1

你的问题似乎并不一致。您想要更改&#或删除“&success = itsdone”吗? –

+0

@dystroy:我想删除“&成功= itsdone”,在我的代码中,我尝试将'&'替换为'#'并将其设置为无效......这是我尝试的一种方式..但是,我是想要删除这 – user2232273

回答

9

replace不会改变在其上调用它的字符串(字符串是不可变的),它返回一个新的。

要使用#更换&,做

window.location = window.location.href.replace('&', '#'); 

如果你想从第一&删除一切,最好是使用正则表达式:

window.location = window.location.replace(/&.*$/,''); 

如果你想要的是要保留x参数,那么您应该重建位置以确保它仍然可以,如果参数在URL中的顺序不同:

window.location = window.location.replace(/([^?]*).*(\?|&)(x=)([^&]+).*/, "$1?$3$4") 

这改变

"http://localhost:8888/Home/Index?a=2&x=72482&c=3" 

"http://localhost:8888/Home/Index?x=72482&success=itsdone" 

"http://localhost:8888/Home/Index?x=72482" 
+0

你是totaly权..非常感谢你..现在我明白什么是错的所有的时间。 – user2232273

+0

请记住,当您更改网址时,大多数浏览器都会执行页面重新加载! – ToBe

+0

@ToBe“最”?我认为这是所需的行为,如果你不只是改变散列。 –

0

了window.location会导致页面重新加载。改变端口也使用这个

window.location = window.location.protocol 
       + "//" 
       + window.location.host 
       + ":8888/" 
       + window.location.pathname 
       + window.location.search.substr(0, window.location.search.indexOf('&')-1) 
+0

我没有注意到问题中的端口改变。我想这是一个错字(但我不确定)。 –

0

是否有一个特殊的原因,你为什么传递isDone作为QueryString参数,如果你甚至不需要它?如果你没有完成,就不会更容易通过它并让页面做出决定?

相关问题