<ul id="g60s4"><pre id="g60s4"></pre></ul>
<strong id="g60s4"><nav id="g60s4"></nav></strong>
<ul id="g60s4"></ul>
  • <tr id="g60s4"></tr>
  • 
    
  • 或者

    URL中“#”“?”“&”號(hào)的作用

    作者:月光邊境 瀏覽:86 發(fā)布時(shí)間:2018-03-19
    分享 評(píng)論 0

    1. #

      10年9月,twitter改版。一個(gè)顯著變化,就是URL加入了"#!"符號(hào)。比如,改版前的用戶(hù)主頁(yè)網(wǎng)址為http://twitter.com/username改版后,就變成了http://twitter.com/#!/username

      這是主流網(wǎng)站第一次將"#"大規(guī)模用于重要URL中。這表明井號(hào)(Hash)的作用正在被重新認(rèn)識(shí)。本文根據(jù)HttpWatch的文章,整理與井號(hào)有關(guān)的所有重要知識(shí)點(diǎn)。

      一、#的涵義

      #代表網(wǎng)頁(yè)中的一個(gè)位置。其右面的字符,就是該位置的標(biāo)識(shí)符。比如,http://www.example.com/index.html#print就代表網(wǎng)頁(yè)index.html的print位置。瀏覽器讀取這個(gè)URL后,會(huì)自動(dòng)將print位置滾動(dòng)至可視區(qū)域。

      為網(wǎng)頁(yè)位置指定標(biāo)識(shí)符,有兩個(gè)方法。一是使用錨點(diǎn),比如<a name="print"></a>,二是使用id屬性,比如<div id="print">。

      二、HTTP請(qǐng)求不包括#

      #是用來(lái)指導(dǎo)瀏覽器動(dòng)作的,對(duì)服務(wù)器端完全無(wú)用。所以,HTTP請(qǐng)求中不包括#。

      比如,訪(fǎng)問(wèn)下面的網(wǎng)址,http://www.example.com/index.html#print,瀏覽器實(shí)際發(fā)出的請(qǐng)求是這樣的:

      GET /index.html HTTP/1.1

      Host: www.example.com

      三、#后的字符

      在第一個(gè)#后面出現(xiàn)的任何字符,都會(huì)被瀏覽器解讀為位置標(biāo)識(shí)符。這意味著,這些字符都不會(huì)被發(fā)送到服務(wù)器端。

      比如,下面URL的原意是指定一個(gè)顏色值:http://www.example.com/?color=#fff,但是,瀏覽器實(shí)際發(fā)出的請(qǐng)求是:

      GET /?color= HTTP/1.1

      Host: www.example.com

      四、改變#不觸發(fā)網(wǎng)頁(yè)重載

      單單改變#后的部分,瀏覽器只會(huì)滾動(dòng)到相應(yīng)位置,不會(huì)重新加載網(wǎng)頁(yè)。

      比如,從http://www.example.com/index.html#location1改成http://www.example.com/index.html#location2,瀏覽器不會(huì)重新向服務(wù)器請(qǐng)求index.html。

      五、改變#會(huì)改變?yōu)g覽器的訪(fǎng)問(wèn)歷史

      每一次改變#后的部分,都會(huì)在瀏覽器的訪(fǎng)問(wèn)歷史中增加一個(gè)記錄,使用"后退"按鈕,就可以回到上一個(gè)位置。這對(duì)于ajax應(yīng)用程序特別有用,可以用不同的#值,表示不同的訪(fǎng)問(wèn)狀態(tài),然后向用戶(hù)給出可以訪(fǎng)問(wèn)某個(gè)狀態(tài)的鏈接。值得注意的是,上述規(guī)則對(duì)IE 6和IE 7不成立,它們不會(huì)因?yàn)?的改變而增加歷史記錄。

      六、window.location.hash讀取#值

      window.location.hash這個(gè)屬性可讀可寫(xiě)。讀取時(shí),可以用來(lái)判斷網(wǎng)頁(yè)狀態(tài)是否改變;寫(xiě)入時(shí),則會(huì)在不重載網(wǎng)頁(yè)的前提下,創(chuàng)造一條訪(fǎng)問(wèn)歷史記錄。

      七、onhashchange事件

      這是一個(gè)HTML 5新增的事件,當(dāng)#值發(fā)生變化時(shí),就會(huì)觸發(fā)這個(gè)事件。IE8+、Firefox 3.6+、Chrome 5+、Safari 4.0+支持該事件。

      它的使用方法有三種:

      window.onhashchange = func;

      <body onhashchange="func();">

      window.addEventListener("hashchange", func, false);

      對(duì)于不支持onhashchange的瀏覽器,可以用setInterval監(jiān)控location.hash的變化。

      八、Google抓取#的機(jī)制

      默認(rèn)情況下,Google的網(wǎng)絡(luò)蜘蛛忽視URL的#部分。

      但是,Google還規(guī)定,如果你希望Ajax生成的內(nèi)容被瀏覽引擎讀取,那么URL中可以使用"#!",Google會(huì)自動(dòng)將其后面的內(nèi)容轉(zhuǎn)成查詢(xún)字符串_escaped_fragment_的值。

      比如,Google發(fā)現(xiàn)新版twitter的URL:http://twitter.com/#!/username

      就會(huì)自動(dòng)抓取另一個(gè)URL:http://twitter.com/?_escaped_fragment_=/username

      通過(guò)這種機(jī)制,Google就可以索引動(dòng)態(tài)的Ajax內(nèi)容。

      注

      AJAX = 異步 JavaScript和XML(標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言的子集)。AJAX 是一種用于創(chuàng)建快速動(dòng)態(tài)網(wǎng)頁(yè)的技術(shù)。

      2. ?

      1)連接作用:比如

      http://www.xxx.com/Show.asp?id=77&nameid=2905210001&page=1

      2)清除緩存:比如

      http://www.xxxxx.com/index.html

      http://www.xxxxx.com/index.html?test123123

      兩個(gè)url打開(kāi)的頁(yè)面一樣,但是后面這個(gè)有問(wèn)號(hào),說(shuō)明不調(diào)用緩存的內(nèi)容,而認(rèn)為是一個(gè)新地址,重新讀取。

      3. &

      不同參數(shù)的間隔符


    亚洲国产综合精品中文第一区| 国产精品免费视频观看拍拍 | 国产韩国精品一区二区三区久久| 久久福利青草精品资源站| 亚洲国产精品狼友中文久久久| 国产精品片在线观看手机版 | 国内精品51视频在线观看| 久久久精品国产Sm最大网站| 亚洲国产精品人人做人人爽| 美女内射无套日韩免费播放| 国产精品毛片无遮挡高清| 熟妇无码乱子成人精品| 国内精品久久久人妻中文字幕 | 麻豆果冻传媒2021精品传媒一区下载| 久久99精品久久久久婷婷| 国产精品免费久久久久久久久| 日韩高清在线观看| 国产亚洲日韩一区二区三区| 日本亚洲精品色婷婷在线影院| 亚洲综合精品一二三区在线| 日本人精品video黑人| 国产精品无码无卡在线播放 | 色综合91久久精品中文字幕 | 国产看午夜精品理论片| 日韩久久精品一区二区三区| 精品久久久中文字幕一区| 精品久久久中文字幕二区| 国产精品模特hd在线| 国产亚洲Av综合人人澡精品| 四虎永久在线精品免费影视 | 91麻豆国产福利精品| 91精品成人免费国产| 大陆精大陆国产国语精品| 亚洲日韩精品射精日| 久久青青草原精品影院| 亚洲AV永久无码精品成人| 亚洲国产综合精品中文第一区| 97精品国产91久久久久久久| 精品久久久久久久无码| 97久久精品人妻人人搡人人玩| 亚洲精品动漫免费二区|