我在互聯網上發現了一個應用程序,當你點擊一個鏈接時,它會重定向到一個頁面,而不刷新整個地方並更改url地址欄,我知道它可能是因爲JQuery可以訪問客戶端sode瀏覽器。更新網址而不刷新?
請幫我這個。
我在互聯網上發現了一個應用程序,當你點擊一個鏈接時,它會重定向到一個頁面,而不刷新整個地方並更改url地址欄,我知道它可能是因爲JQuery可以訪問客戶端sode瀏覽器。更新網址而不刷新?
請幫我這個。
最簡單的解決方案是使用框架或iframe,並將a
的target
屬性設置爲框架(或者只需單擊框架內的鏈接)。這將顯示框架中的新頁面,並在地址欄中顯示frameset-html的地址。
您可以使用HTML5歷史API來更改URL而無需刷新頁面,從Mozilla的https://developer.mozilla.org/en/DOM/Manipulating_the_browser_history
看看這個教程還爲跨瀏覽器解決方案
jQuery的PJAX插件https://github.com/defunkt/jquery-pjax會幫你檢查出https://github.com/browserstate/History.js做你剛纔提到的,這將有助於更新內容並更改URL而不刷新。
下面是一個例子:http://pjax.heroku.com/這個例子
的源代碼可以在這裏找到:使用https://github.com/defunkt/jquery-pjax/tree/heroku
歷史API,你可以做這樣的事情
if (history && history.pushState){
history.pushState(null, null, '/new/url');
}
與嘗試在你的瀏覽器現在鉻js控制檯
這就是所需要的(也許多一點,但多數民衆贊成的基礎上它
這通常是通過使用最新的HTML5
歷史API要麼做,或閱讀,對於舊瀏覽器,更改URL中的哈希值。看看這篇文章:http://dev.opera.com/articles/view/introducing-the-html5-history-api/。
每當某個用戶操作提示新頁面而不是加載新頁面(使用新URL)時,該頁面將保留公共屬性(如說,頁眉,頁腳或在電子商務網站中說的購物車小部件),其餘內容通過Ajax
異步獲取。獲取新內容後,用戶界面將相應更改,並將新的state
推入歷史堆棧,並相應地更改URL。通過此處用作字典的data
屬性,可以存儲有關用戶向前/向後導航並再次到達該頁面時顯示內容的信息。事情是這樣的:
history.pushState({mydata1: data, mydata2: anotherData},"newTitle",newURL);
因此,當用戶按下瀏覽器的後退按鈕時,該條目被簡單地彈出歷史堆棧,以及新項目的數據屬性在堆棧的頂部,顯示新頁面。當前頁面可以被更新:可從state
獲得
history.replaceState({mydata1: data, mydata2: anotherData}, "anotherTitle",newURL);
關於當前頁的所有信息:
myState = history.state;
如果看到,Facebook的做同樣的事情。當您單擊主頁按鈕或轉到朋友的個人資料時,不會加載新頁面。右側的通知代碼保持原樣(而不是再次加載新頁面),如果您打開任何聊天窗口,它將保持原樣。這是因爲頁面不會重新加載到新頁面(在這種情況下,所有小部件(包括聊天和報價器也應該重新加載),只有URL被動態更改,並且新內容通過Ajax獲取並顯示。
如果您查看Facebook的在IE8
,不支持History
API,你會發現它仍然有效,但URL改變行爲是不同的。這是因爲他們通過改變哈希來改變URL的舊方式。
雖然這可能在理論上回答這個問題,但[最好](http://meta.stackexchange.com/q/8259)包含答案的基本部分(例如API的示例用法)這裏,並提供鏈接供參考。 –