meta 標籤到底有什麼用?終於有人說出了真相

meta 標籤到底有什麼用?終於有人說出了真相

最近部門在推微前端,需要按功能拆分多個子應用,主應用在加載的過程中經常出現加載失敗的問題。

最后更新 2021/12/23 下午9:02
隐冬
预计阅读 9 分钟
分类
前端
标签
HTML Meta

1. 起因

最近部门在推微前端,需要按功能拆分多个子应用,主应用在加载的过程中经常出现加载失败的问题。因为 https 地址中,如果加载了 http 资源,浏览器将认为这是不安全的资源,将会默认阻止。后来在文档中添加了<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">完美解决。

此时我才发现自己对meta简直一无所知,本文主要介绍meta,顺带也会提一提head中的其他标签。如有不对请指出,最后欢迎点赞 + 收藏。

head标签与html标签,body标签一样是一个文档必须的元素。

head标签用于定于文档头部信息,它是所有头部元素的容器。head中的元素可以引用脚本、指示浏览器在哪里找到样式表、提供元信息等等。

文檔的頭部描述了文檔的各種屬性和信息,包括文檔的標題、在 web 中的位置以及和其他文檔的關係等。絕大多數文檔頭部包含的數據都不會真正作為內容顯示給讀者。

下面这些标签可用在 head 部分:base, link, meta, script, style, 以及 title

注意:应该把 head 标签放在文档的开始处,紧跟在 html 后面,并处于 body 标签或 frameset 标签之前。

3. title 標籤

title 定义文档的标题,它是 head 部分中唯一必需的元素。浏览器会以特殊的方式来使用标题,设置的内容不会显示在页面中,通常把它放置在浏览器窗口的标题栏或状态栏上,如设置为空标题展示当前页面的地址信息。

當把文檔加入用戶的連結列表或者收藏夾或書籤列表時,標題將成為該文檔連結的默認名稱。

3.1. dir 屬性

规定元素中内容的文本方向rtlltr

3.2. lang 屬性

規定元素中內容的語言代碼。

4. meta 標籤

meta 元素往往不会引起用户的注意,但是meta对整个网页有影响,会对网页能否被搜索引擎检索,和在搜索中的排名起着关键性的作用。

meta有个必须的属性content用于表示需要设置的项的值。

meta存在两个非必须的属性http-equivname, 用于表示要设置的项。

比如<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">,设置的项是Content-Security-Policy设置的值是upgrade-insecure-requests

4.1. http-equiv 屬性

http-equiv一般设置的都是与http请求头相关的信息,设置的值会关联到http头部。也就是说浏览器在请求服务器获取html的时候,服务器会将html中设置的meta放在响应头中返回给浏览器。常见的类型比如content-type, expires, refresh, set-cookie, window-target, charsetpragma等等。

4.1.1. content-type

比如:<meta http-equiv="content-type" content="text/html charset=utf8">可以用来声明文档类型、设字符集,目前content-type只能在 html 文档中使用。

這樣設置瀏覽器的頭信息就會包含:

content-type: text/html charset=utf8

4.1.2. expires

用於設置瀏覽器的過期時間, 其實就是響應頭中的 expires 屬性。

<meta http-equiv="expires" content="31 Dec 2021" />
expires:31 Dec 2008

4.1.3. refresh

該種設定表示 5 秒自動刷新並且跳轉到指定的網頁。如果不設置 url 的值那麼瀏覽器則刷新本網頁。

<meta http-equiv="refresh" content="5 url=http://www.zhiqianduan.com" />

4.1.4. window-target

強制頁面在當前窗口以獨立頁面顯示, 可以防止別人在框架中調用自己的頁面。

<meta http-equiv="window-target" content="_top'>

4.1.5. pragma

禁止瀏覽器從本地計算機的緩存中訪問頁面的內容

<meta http-equiv="pragma" content="no-cache" />

4.2. name 屬性

name属性主要用于描述网页,与对应的content中的内容主要是便于搜索引擎查找信息和分类信息用的, 用法与http-equiv相同,name设置属性名,content设置属性值。

4.2.1. author

author用来标注网页的作者

<meta name="author" content="aaa@mail.abc.com" />

4.2.2. description

description用来告诉搜素引擎当前网页的主要内容,是关于网站的一段描述信息。

<meta name="description" content="这是我的HTML" />

4.2.3. keywords

keywords设置网页的关键字,来告诉浏览器关键字是什么。是一个经常被用到的名称。它为文档定义了一组关键字。某些搜索引擎在遇到这些关键字时,会用这些关键字对文档进行分类。

<meta name="keywords" content="Hello world" />

4.2.4. generator

表示當前 html 是用什麼工具編寫生成的,並沒有實際作用,一般是編輯器自動創建的。

<meta name="generator" content="vscode" />

4.2.5. revised

指定頁面的最新版本

<meta name="revised" content="V2,2015/10/1" />

4.2.6. robots

告诉搜索引擎机器人抓取哪些页面,all / none / index / noindex / follow / nofollow

<meta name="robots" content="all" />
  • all:文件将被检索,且页面上的链接可以被查询;
  • none:文件将不被检索,且页面上的链接不可以被查询;
  • index:文件将被检索;
  • follow:页面上的链接可以被查询;
  • noindex:文件将不被检索,但页面上的链接可以被查询;
  • nofollow:文件将不被检索,页面上的链接可以被查询。

4.3. scheme 屬性

scheme 属性用于指定要用来翻译属性值的方案。此方案应该在由 head 标签的 profile 属性指定的概况文件中进行了定义。html5不支持该属性。

5. base 標籤

base标签定义了文档的基础url地址,在文档中所有的相对地址形式的url都是相对于这里定义的url而言的。为页面上的链接规定默认地址或目标。

<base href="http://www.w3school.com.cn/i/" target="_blank" />

base 標籤包含的屬性。

5.1. href

href是必选属性,指定了文档的基础url地址。例如,如果希望将文档的基础URL定义为https://www.abc.com,则可以使用如下语句:<base href="http://www.abc.com">如果文档的超链接指向welcom.html,则它实际上指向的是如下url地址:https://www.abc.com/welocme.html

5.2. target

定义了当文档中的链接点击后的打开方式_blank_self_parrent_top

link用于引入外部样式表,在html的头部可以包含任意数量的linklink标签有以下常用属性。

<link type="text/css" rel="stylesheet" href="github-markdown.css" />

6.1. type

定义包含的文档类型,例如text/css

6.2. rel

定义html文档和所要包含资源之间的链接关系,可能的值有很多,最为常用的是stylesheet,用于包含一个固定首选样式的表单。

6.3. href

表示指向被包含资源的url地址。

7. style 標籤

編寫內部樣式表的標籤。

<style>
  body {
    background: #f3f5f9;
  }
</style>

8. script 標籤

加载javascript脚本的标签。加载的脚本会被默认执行。默认情况下当浏览器解析到script标签的时候会停止html的解析而开始加载script代码并且执行。

<script src="script.js"></script>

8.1. type

指示脚本的MIME类型。

<script type="text/javascript">

8.2. async

规定异步执行脚本,仅适用于通过src引入的外部脚本。设置的async属性的script加载不会影响后面html的解析,加载是与文档解析同时发生的。加载完成后立即执行。执行过程会停止html文档解析。

<script async src="script.js"></script>

8.3. charset

規定在外部腳本文件中使用的字符編碼。

<script type="text/javascript" src="script.js" charset="UTF-8"></script>

8.4. defer

规定是否对脚本执行进行延迟,直到页面加载为止。设置了defer属性的script不会阻止后面html的解析,加载与解析是共同进行的,但是script的执行要在所有元素解析完成之后,DOMContentLoaded事件触发之前完成。

<script defer src="script.js"></script>

8.5. language

规定脚本语言,与type功能类似,不建议使用该字段。

8.6. src

外部腳本的地址。

<script src="script.js"></script>

9. bgsound

網站背景音樂。

<bgsound src="music.mp4" autostart="true" loop="5"></bgsound>

9.1. src

表示背景音乐的url值。

9.2. autostart

是否自动播放ture自动播放,false不播放,默认为false

9.3. loop

是否重复播放,值为数字或者infinite,表示重复具体次或无限次。

參考來源

  1. w3c
  2. Wangkiwa

作者:隱冬

連結:https://juejin.cn/post/6987919006468407309

來源:稀土掘金

Keep Exploring

延伸阅读

更多文章
同分类 2023/10/16

net工具箱:開源、免費的純前端工具網站,帶你探索10大工具分類和73個實時在線小工具

dotnet工具箱是一個純前端的、開源和免費的工具網站,周末我參考了開源項目it-tools,對網站界面文字進行了漢化,並重新部署了網站。該網站共有10大工具分類,提供了73個實時在線小工具。使用vue3開發的dotnet工具箱具有獨特的特色,本文詳細居間了其中一些特色工具,並簡單分享了如何部署自己的工具網站。如果你對工具網站感興趣,不妨來了解一下dotnet工具箱吧!

继续阅读