我尝试通过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 = "";
答案 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参数传递,是否有特殊原因?是不是更容易甚至不通过它开始并让页面决定你是否已经完成?