「散列砰」導航,因爲它有時也被稱爲...
http://whatever.com/path/to/#!/some-ajax-state
...是很快成爲一個非問題由於現代暫時治標不治本的解決方案瀏覽器標準。很可能,Twitter將逐步淘汰,正如Facebook已經在做的那樣。
它是幾個概念組合...
在過去,一個鏈接的目的有兩個:它加載一個新的文檔和/或向下滾動到嵌入式主播與指示哈希(#)。
http://whatever.com/script.php#fourth-paragraph
散列之後的任何內容不是從服務器請求的,而是由瀏覽器在頁面中搜索的。這一切仍然工作得很好。
隨着AJAX的採用,新的內容可以加載到當前(已經加載)的頁面。有了這個動態加載,出現了幾個問題:1)沒有用於書籤或鏈接到這個新內容的唯一URL,2)搜索永遠不會看到它。
一些聰明的人通過使用散列作爲一種「狀態」引用來解決第一個問題,將其包含在鏈接&書籤中。文檔加載後,瀏覽器讀取散列並運行AJAX請求,顯示頁面及其動態AJAX更改。
http://whatever.com/script.php#some-ajax-state
這解決了AJAX的問題,但搜索引擎的問題仍然存在。搜索引擎不會像瀏覽器一樣加載頁面並執行JavaScript。
谷歌來救援。 Google提出了一種方案,其中任何帶有散列(#!)而不是散列(#)的URL都會向搜索機器人建議存在用於索引的備用URL,其中涉及「_escaped_fragment_」變量的東西。閱讀關於它在這裏...
https://developers.google.com/webmasters/ajax-crawling/docs/getting-started
今天,在大多數主流瀏覽器採用JavaScript的pushState的的,這一切正變得過時。通過pushstate,當內容被動態加載或更改時,當前頁面URL可以被修改而不會導致頁面加載。如果需要,這將爲書籤&歷史記錄提供真實的工作網址。然後可以像往常一樣製作鏈接,不含哈希&哈希 - 磅碼。
從今天起,如果您在較早的瀏覽器中加載Facebook,您將看到哈希碼,但當前瀏覽器將演示使用pushstate。
當您將問題標記爲重複時,對重複本身的引用會很有用。這是你的意思嗎? http://stackoverflow.com/questions/3009380/whats-the-shebang-hashbang-in-facebook-and-new-twitter-urls-for?lq=1 – 2013-07-27 04:52:43
你現在應該認真重新考慮你接受的答案爲@ BillBad解釋說它非常好! – 2014-09-02 17:54:10
@Emin沒關係,我是這麼做的!有一段時間沒有回過頭來看這個問題 – ixchi 2014-09-05 01:09:20