1.meta的意義:
在HTML文檔中忧吟,meta元素可放置在head標(biāo)簽內(nèi)用于定義整個(gè)文檔層面的元數(shù)據(jù)信息砌函。使用meta標(biāo)簽時(shí)無(wú)需將標(biāo)簽閉合。
2.meta的使用:
除了通用的全局屬性溜族,meta元素還可以擁有4個(gè)特有屬性:name讹俊、http-equiv、charset和content煌抒。
meta元素可以用name屬性表示文檔級(jí)元數(shù)據(jù)仍劈,以http-equiv屬性表示編程指示,以及charset屬性用來(lái)表示HTML文檔序列化為字符串而成的文件的字符編碼聲明寡壮。
對(duì)于name贩疙、http-equiv和charset,任何meta元素必須擁有且只能擁有其中的一個(gè)况既,這一屬性及其值決定了該meta元素所表達(dá)的作用这溅。如果meta元素?fù)碛衝ame屬性或者h(yuǎn)ttp-equiv屬性,則該meta元素必須同時(shí)具備content屬性用于描述具體的元數(shù)據(jù)信息(如果content屬性缺失棒仍,則其值默認(rèn)為空字符串)悲靴;如果meta元素?fù)碛衏harset屬性,則content屬性不應(yīng)出現(xiàn)降狠。
注:一個(gè)HTML文檔中擁有charset屬性的meta元素最多只能出現(xiàn)一個(gè)对竣。這很好理解 -- 整個(gè)文檔層面的編碼信息只需要出現(xiàn)一次即可否纬。
三個(gè)可選屬性:
屬性 | 值 | 描述 |
---|---|---|
http-equiv | content-language, content-type, expires, refresh,set-cookie | 把 content 屬性關(guān)聯(lián)到 HTTP 頭部蛋褥。 |
name | application-name, author, description, keywords, generator, revised, others | 把 content 屬性關(guān)聯(lián)到一個(gè)名稱。 |
charset | utf-8... | 設(shè)定自身的編碼 |
必選屬性:
屬性 | 值 | 描述 |
---|---|---|
content | some_text | 定義與 http-equiv 或 name 屬性相關(guān)的元信息 |
3.具體屬性
1.name
對(duì)于meta元素的name屬性乏沸,HTML5文檔定義了一些標(biāo)準(zhǔn)值:
(application-name) 如果HTML頁(yè)面是一個(gè)Web應(yīng)用爪瓜,則可以用name值為application-name的meta元素來(lái)定義該Web應(yīng)用的名稱铆铆。在使用application-name時(shí),可通過(guò)同時(shí)定義meta元素的lang值來(lái)設(shè)定不同自然語(yǔ)言情況下該Web應(yīng)用的名稱翁都,從而實(shí)現(xiàn)Web應(yīng)用名稱的本地化谅猾。不過(guò)在同一個(gè)HTML文檔中,不允許出現(xiàn)兩個(gè)application-name其所屬的meta元素lang值相同的情況 -- 同一種語(yǔ)言的情況下坐搔,Web應(yīng)用的名稱只能有一個(gè)薯蝎。對(duì)于通過(guò)application-name所定義的Web應(yīng)用的名稱谤绳,瀏覽器可以將其作為窗口頂部的名稱信息加以展示(也即,其優(yōu)先級(jí)高于head標(biāo)簽中的title元素)消略。
(author)name值為author的meta元素可用于定義當(dāng)前文檔的作者信息。
(description)name值為description的meta元素可用于定義當(dāng)前文檔的具體描述信息艺演,這種meta元素在同一個(gè)HTML文檔中最多只能出現(xiàn)一個(gè)胎撤。在Web的早期歷史中断凶,搜索引擎會(huì)根據(jù)這個(gè)description信息來(lái)處理HTML文檔;但由于之后SEO對(duì)此屬性的濫用认烁,導(dǎo)致如今搜索引擎對(duì)此meta信息的參考權(quán)重已經(jīng)大為降低。
(generator)對(duì)于由Dreamweaver等網(wǎng)頁(yè)制作軟件所制作的HTML文檔舶沛,name值為generator的meta元素可用于記錄該網(wǎng)頁(yè)制作軟件的信息如庭。
(keywords)name值為keywords的meta元素可接受以逗號(hào)分隔的多個(gè)關(guān)鍵詞作為content,用于描述當(dāng)前文檔的關(guān)鍵詞信息柱彻。與description一樣,由于SEO濫用,如今的搜索引擎在處理HTML文檔的時(shí)候已經(jīng)不考慮keywords信息了卖擅。
2.http-equiv
http-equiv屬性接受有限的幾個(gè)可選值墨技,用于從瀏覽器角度描述當(dāng)前文檔的元數(shù)據(jù)信息 -- 其出發(fā)點(diǎn)及實(shí)質(zhì)是模擬HTTP Response頭中的相應(yīng)字段。這些可選值包括:
(content-language)meta標(biāo)簽可以使用http-equiv="content-language"來(lái)定義當(dāng)前文檔的自然語(yǔ)言断楷。不過(guò)HTML5標(biāo)準(zhǔn)并不建議這么做崭别,對(duì)于文檔自然語(yǔ)言的定義茅主,標(biāo)準(zhǔn)建議使用lang屬性。
(content-type)meta標(biāo)簽可以通過(guò)使用http-equiv="content-type"來(lái)定義當(dāng)前文檔的MIME Type及編碼诀姚,其實(shí)質(zhì)是模擬HTTP Response中的content-type頭赫段。一般情況下,這一meta標(biāo)簽會(huì)寫成下面這個(gè)樣子:<meta http-equiv="content-type" content="text/html;charset=utf-8">贬丛。由于作用相同瘫寝,http-equiv值為content-type的meta標(biāo)簽與擁有charset屬性的meta標(biāo)簽在同一個(gè)HTML文檔中不能同時(shí)出現(xiàn)蜒蕾。
(refresh)在meta標(biāo)簽中使用http-equiv="refresh"可實(shí)現(xiàn)定時(shí)跳轉(zhuǎn)咪啡,此時(shí)可用meta標(biāo)簽的content值來(lái)表示跳轉(zhuǎn)前的等待時(shí)間以及頁(yè)面跳轉(zhuǎn)的目的地撤摸。但由于用戶體驗(yàn)的原因褒纲,http-equiv="refresh"的實(shí)際應(yīng)用已經(jīng)很少了。以下是兩個(gè)簡(jiǎn)單的例子:
<meta http-equiv="Refresh" content="300">
<meta http-equiv="Refresh" content="20; URL=page4.html">
(set-cookie)在meta標(biāo)簽中使用http-equiv="set-cookie"可實(shí)現(xiàn)瀏覽器cookie寫入衫嵌,不過(guò)HTML5標(biāo)準(zhǔn)并不建議這么做 -- 正確的做法應(yīng)當(dāng)是在真正的HTTP Response頭中來(lái)實(shí)現(xiàn)set-cookie行為楔绞。
3.charset
HTML文檔可以通過(guò)擁有charset屬性的meta標(biāo)簽來(lái)設(shè)定自身的編碼唇兑。無(wú)論是通過(guò)這種方式扎附,還是通過(guò)http-equiv="content-type"的方式,文檔的編碼信息必須得到定義留夜。不過(guò)當(dāng)HTML文檔作為包含在iframe中的子文檔而存在的情況下香伴,標(biāo)準(zhǔn)規(guī)定不能對(duì)該文檔進(jìn)行編碼定義(此時(shí)其編碼取決于包含它的那個(gè)外部文檔)。
注:HTML5標(biāo)準(zhǔn)規(guī)定文檔的作者(Web開(kāi)發(fā)人員)應(yīng)當(dāng)使用UTF-8作為HTML文檔的編碼即纲。