如何删除浏览器地址栏中URL的某些部分

时间:2014-01-09 15:15:50

标签: javascript jquery replace

我尝试通过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 = "";

3 个答案:

答案 0 :(得分:10)

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"

答案 1 :(得分: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)

答案 2 :(得分:0)

如果您甚至不需要将isDone作为QueryString参数传递,是否有特殊原因?是不是更容易甚至不通过它开始并让页面决定你是否已经完成?