URL中#號(井號)的作用

1. 井號在URL中指定的是頁面中的一個位置

井號作爲頁面定位符出現在URL中,比如:http://www.httpwatch.com/features.htm#print ,此URL表示在頁面features.htm中print的位置。瀏覽器讀取這個URL後,會自動將print位置滾動至可視區域。

在頁面上添加錨點的方法爲:<a name=”print”></a>或使用<div id=”print” >。

2.井號後面的數據不會發送到HTTP請求中

當時使用類似HttpWatch工具時,你是無法在Http請求中找到井號後面的參數的,原因是井號後面的參數是針對瀏覽器起作用的而不是服務器端。

3. 任務位於井號後面的字符都是位置標識符

不管第一個井號後面跟的是什麼參數,只要是在井號後面的參數一律看成是位置標識符。

比如這樣一個鏈接(http://example.com/?color=#ffff&amp;shape=circle),後面跟的參數是顏色和形狀,但是服務器卻並不能理解URL中的含義。服務器接收到的只是:

4. 改變井號後面的參數不會觸發頁面的重新加載但是會留下一個歷史記錄

僅改變井號後面的內容,只會使瀏覽器滾動到相應的位置,並不會重現加載頁面。

比如從http://www.httpwatch.com/features.htm#filterhttp://www.httpwatch.com/features.htm#print,瀏覽器並不會去重新請求頁面,但是此操作會在瀏覽器的歷史記錄中添加一次記錄,即你可以通過返回按鈕回答上次的位置。這個特性對Ajax來說特別的有用,可以通過設置不同井號值,來表示不同的訪問狀態,並返回不同的內容給用戶。(注:在IE6和IE7下井號的改變不會增加歷史記錄。)

5、可以通過javascript使用window.location.hash來改變井號後面的值

window.location.hash這個屬性可以對URL中的井號參數進行修改,基於這個原理,我們可以在不重載頁面的前提下創造一天新的訪問記錄。如標記框架頁面當前的頁面:

除此之外,HTML 5新增的onhashchange事件,當#值發生變化時,就會觸發這個事件。

6. Googlebot對井號的過濾機制

默認情況下Google在索引頁面的時候會忽略井號後面的參數,同時也不會去執行頁面中的javascript。然而谷歌爲了支持對Ajax生成內容的索引,定義瞭如果在URL中使用“#!”,則Google會自動將其後面的內容轉成查詢字符串_escaped_fragment_的值。

比如最新的twitter URL:http://twitter.com/#!/username,Google會自動請求http://twitter.com/?_escaped_fragment_=/username來獲取Ajax內容。

發佈了30 篇原創文章 · 獲贊 3 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章