2011-10-21 48 views
2

除了爲Google提供AJAX內容可抓取之外,還有其他用於shebangs/hashbangs的用法嗎?或者是它?什麼是shebang/hashbang?

+0

可能的重複[什麼是hashbang(#!)在Facebook和新的Twitter的URL?](http://stackoverflow.com/questions/3009380/whats-the-hashbang-in-facebook-and-new- twitter-urls-for) –

回答

11

在Ajax發明之前,URL中使用的哈希已存在。

它最初是作爲對一個頁面內的子部分的引用。在這種情況下,例如,你可以在頁面的頂部有一個目錄,每個目錄都是同一頁的一部分的哈希鏈接。當你點擊這些鏈接時,頁面向下(或向上)滾動到相關標記。

當瀏覽器接收到一個含有散列的URL時,只有散列之前的地址部分作爲頁面請求發送到服務器。哈希部分由瀏覽器保存以處理自身並將頁面滾動到相關位置。

這是哈希語法最初的目的,所以這是對您的問題的直接答案。但我會進行一點,並解釋我們如何從那裏到現在我們現在...

當Ajax被髮明時,人們開始想要找到方法來在他們的網站上有一個單一的頁面,但仍然有人們可以通過點擊外部鏈接直接獲取相關內容。

開發人員很快意識到現有的哈希語法可以爲他們做到這一點,因爲它可以從JavaScript內讀取URL的哈希值。所有你需要做的就是當它看到一個散列(這很容易)時停止滾動,並且你已經獲得了瀏覽器有效忽略的一些URL,但是可以通過javascript讀取和寫入;非常適合與Ajax一起使用。谷歌在其搜索中包含URL的哈希部分這一事實只是一個幸運的獎金,但是由於技術已經變得更加普遍,這一點已經變得相當重要。

我注意到人們稱這個散列語法爲「shebang」或「hashbang」,但從技術上講這是不正確的;它只是一個相關的散列 - 「hashbang」這個詞的'bang'部分是指感嘆號('bang'是它的印刷行業術語)。某些URL確實可能在散列後添加感嘆號,但只有散列與瀏覽器相關;後面的字符串完全取決於網站的作者;它可能包含一個驚歎號或不包括他們選擇的感嘆號,但無論哪種方式,瀏覽器都不會對它做任何事情。如果你喜歡,可以隨意稱它爲hashbang或shebang,但要明白只有散列纔有意義。

實際術語「shebang」或「hashbang」可以追溯到很多,並且確實涉及到#!語法,但不在URL的上下文中。

這個詞的本義是當這些符號是在一個Unix腳本文件的開頭使用,告訴什麼編程語言的腳本編寫腳本處理器。

所以這確實是一個答案你的問題,你說過的方式,但可能不是你的意思,因爲它根本與URL無關。

+1

哇,很好的解釋,認真。謝謝! – federicot

相關問題