2010-01-17 149 views
0

我只是想知道,是否有任何可能的方式來動態更改網頁地址欄中顯示的網址?比如,網頁上可能有兩個按鈕,當用戶點擊一個按鈕時,它將(或不會無關緊要)刷新頁面,URL將爲mysite.com/page1,或者如果用戶單擊第二個按鈕按鈕,出現在地址欄中的網址將爲mysite.com/page2?是否可以動態更改網頁的網址?

我不需要它來挖掘域,只是後面的部分。

只是想說,我不想去另一頁。這必須在一頁上完成。使用JS,PHP或通過.htaccess文件完成並不重要,但它只能在一個頁面上完成。

回答

4

在更改.location之外,您只能真正控制window.location.hash

window.location.hash = "boo"; http://mysite.com -> http://mysite.com/#boo 

這是唯一辦法去一個新的頁面,而改變URL。改變

  • window.location.hash當改變
    1. window.location重定向用戶
    2. window.location.pathname重定向用戶更改
    3. window.location.search重定向用戶不重定向用戶時:所有其他方法將刷新頁面,或重定向頁面已更改

    您也可以只ch安格使用相對URL中的非域路徑:

    window.location = "page1"; // include forward-slash if necessary 
              // goes to http://somesite.com/page1 
    
    +0

    喬納森你是一個stackoverflowin sonofagun! – jay 2010-01-17 06:16:19

    +0

    謝謝,我想:)嘿嘿。 – Sampson 2010-01-17 06:17:43

    +0

    我非常感謝你的貢獻。 – jay 2010-01-17 06:21:28

    1

    你絕對可以(容易地)服務關閉兩個/page1/page2在同一頁面,並有按鈕分別導航到一個,另 - 「刷新頁面「,如你所說(即從服務器或瀏覽器緩存重新加載它),當然也會相應地改變地址欄中顯示的內容。但是,我沒有看到這樣做。

    1

    我不太明白你想要什麼。

    在這兩種情況下,您是否想要顯示相同的頁面,但使用不同的URL?

    在這種情況下,您可以編寫一個.htaccess文件重定向到/ link1和/ link2的同一頁面,並將按鈕指向任一鏈接。

    0

    只是爲了更新這個問題,以防其他人來。

    現在可以使用pushState()通過JavaScript處理。有幾個庫(如History.js)旨在簡化不同瀏覽器的實現,但目前沒有適當的支持。但是,如果你想看到一個簡單的使用例子但不使用這種庫,隨時檢查出下面的文章上Hawkee

    Dynamically change URLs using Push and Popstate