2014-01-09 70 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參數,如果你甚至不需要它?如果你沒有完成,就不會更容易通過它並讓頁面做出決定?

相關問題