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

use*_*273 3 javascript jquery replace

我尝试通过javascript删除浏览器地址栏中的部分网址.

但我不明白为什么它不起作用,如果我在控制台中测试结果是正确的但它仍然没有在地址栏中改变.

我该怎么做?

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

我想要的网址是:

http://localhost:8888/Home/Index?x=72482
Run Code Online (Sandbox Code Playgroud)

这是我的javascript代码:

window.location.href.replace('&', '#');
window.location.hash = "";
Run Code Online (Sandbox Code Playgroud)

Den*_*ret 10

replace 不会更改您调用它的字符串(字符串是不可变的),它返回一个新字符串.

要更换&#,做

window.location = window.location.href.replace('&', '#');
Run Code Online (Sandbox Code Playgroud)

如果要从第一个中删除所有内容&,最好使用正则表达式:

window.location = window.location.replace(/&.*$/,'');
Run Code Online (Sandbox Code Playgroud)

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

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

这种变化

"http://localhost:8888/Home/Index?a=2&x=72482&c=3"
Run Code Online (Sandbox Code Playgroud)

要么

"http://localhost:8888/Home/Index?x=72482&success=itsdone"
Run Code Online (Sandbox Code Playgroud)

"http://localhost:8888/Home/Index?x=72482"
Run Code Online (Sandbox Code Playgroud)