Open anjia opened 2 years ago
元素是网页的一部分。在 XML 和 HTML 中,元素可能包含数据项/文本块/图像,或什么都没有。一个典型的元素通常包括一个带属性的开始标签、文本内容和一个结束标签。
每个元素里可以放哪些内容是由该元素的内容模型决定的
虽然元素和标签的名称是一样的,但它们不是一个东西。在 HTML 中,标签用于创建元素,元素是由开始标签和结束标签组成的,故而标签是在网页的源代码里,而元素则存在于 DOM 中(DOM 就是在浏览器中展示网页的文档模型)。
源码字符串 → token → tag → element
- tag, 标签
- element, 元素
有 6 种不同的元素,如下:
种类 | 元素 | |
---|---|---|
void elements | 空元素 | <meta> , <base> , <link> <input> , <img> , <area> , <source> , <track> <br> , <wbr> , <hr> , <col> <embed> , <param> |
raw text elements | 原始文本元素 | <script> , <style> |
escapable raw text elements | 可转义的原始文本元素 | <textarea> , <title> |
template element | 模板元素 | <template> |
foreign elements | 外来元素 | 来自 MathML 命名空间和 SVG 命名空间的元素 |
normal elements | 普通元素 | 除以上 5 种之外的所有元素 |
为了方便理解和使用,我们按照功能对元素进行如下分类。
分类 | 元素 | 说明 |
---|---|---|
根元素 | <html> |
HTML 文档的根元素 |
<body> |
代表 HTML 文档的内容。只能有一个 | |
元数据 | <head> |
元数据包含了页面相关的信息。 比如: |
<style> , <link> |
样式 | |
<script> , <noscript> |
脚本 | |
<meta> , <base> , <title> |
帮助软件使用和渲染的数据(eg.浏览器/搜索引擎) | |
内容块 | <main> <aside> , <article> , <nav> , <section> <header> , <footer> |
内容块元素允许我们将文档内容组织成逻辑片段 |
<h1> , <h2> , <h3> , <h4> , <h5> , <h6> |
||
<address> |
||
文本内容 | <ol> , <ul> , <li> <dl> , <dt> , <dd> |
文本内容元素有助于 accessibility 和 SEO 它们能标识出内容的目的和结构 |
<figure> , <figcaption> |
||
<pre> <blockquote> <p> <hr> |
||
<div> |
没啥语义,一般用于分块 | |
内联文本 | <a> |
定义单词/行或任意文本的含义,结构或样式 |
<cite> , <q> <code> , <samp> <sub> , <sup> <ruby> , <rp> , <rt> |
||
<abbr> , <dfn> , <time> , <var> |
||
<kbd> , <data> |
||
<mark> <strong> , <em> , <i> , <small> <s> , <u> <del> , <ins> |
||
<br> , <wbr> <bdi> , <bdo> |
||
<span> |
没啥语义,一般用于分组,为了样式/共享属性 | |
表格 | <table> |
表格数据 |
<caption> <colgroup> ,<col> <thead> , <tbody> , <tfoot> |
||
<tr> , <th> , <td> |
||
表单 | <form> |
包含用于提交信息的可交互控件 |
<input> , <button> <textarea> <select> , <optgroup> , <option> |
||
<label> <fieldset> , <legend> <datalist> , <option> |
||
<progress> , <meter> |
||
<output> |
||
交互 | <details> , <summary> |
可交互 |
<dialog> |
||
<menu> |
<ul> 的语义化表示(目前兼容性不好) |
|
多媒体资源 | <img> <area> , <map> <picture> , <source> |
图片+音频+视频 |
<audio> , <video> <track> , <source> |
||
内嵌内容 | <iframe> , <portal> |
嵌入网页+其它内容 |
<embed> <object> , <param> |
||
脚本 | <canvas> |
可创建 dynamic content 和 Web applications 可使用以下 API 绘制 graphics 和 animations - canvas scripting API - WebGL API |
SVG 和 MathML | <svg> <math> |
另外两个命名空间,可直接写 |
Web Components | <template> <slot> |
分类 | 元素 | 说明 |
---|---|---|
已废弃 | <font> , <basefont> , <big> , <blink> <center> , <marquee> |
已废弃(用CSS更合适) |
<acronym> , <strike> , <rb> ,<rtc> <plaintext> , <tt> , <xmp> <dir> , <menuitem> <frameset> , <frame> , <noframes> <keygen> <shadow> , <content> |
已废弃(有更合适的替代元素) | |
<image> , <bgsound> , <noembed> <spacer> , <nobr> |
已废弃(非标准) | |
<applet> , <hgroup> |
已废弃(其它) |
// https://developer.mozilla.org/en-US/docs/Web/HTML/Element
document.querySelectorAll('.standard-table').forEach(table => { console.log("\n"); table.querySelectorAll("tr td:first-child code").forEach(code => console.log(code.innerText)) });
HTML 元素的属性有的用来配置该元素,有的可以让其灵活调整行为以满足用户的需求。大部分属性都有两个方面,即内容属性和 IDL 属性。
- content attribute
- Interface Definition Language attribute, 接口定义语言属性
内容属性就是从内容里设置的属性,即从 HTML 代码里。我们可以通过 element.setAttribute()
和 element.getAttribute()
来设置和获取内容属性。内容属性的类型始终是字符串,即使它的预期值是个整数,比如 <input maxlength="34">
, setAttribute("maxlength", "34")
。
IDL 属性也称 JavaScript 属性,可以通过 element.foo
来读取和设置,它本质上反映的也是内容属性。
IDL attribute 即 JavaScript property
大多数情况下,IDL 属性都会返回元素真正使用的值。比如 <input type="foo">
虽然我们指定了内容属性 type="foo"
,但因为它是无效的所以 <input>
元素会按照默认值显示为 type="text"
(在外观和行为上),此时读取内容属性依然是 foo
,而读取 IDL 属性是当前实际使用的 text
,如下:
IDL 属性的类型不总是字符串。当我们使用 IDL 属性的时候,读取和设置的值类型都是元素属性所需要的类型。
比如 <input type="text" maxlength="150">
,input.maxLength
总是返回一个数字,
当我们给它设置值的时候也应该是个数字,如果传的是非数值类型那么 JavaScript 会自动进行类型转换。
IDL 属性可以反映(reflect)其它类型,比如无符号长整数、URL、布尔值等。但不幸的是,并没有明确的规则和方式列出 IDL 属性和内容属性的行为对应关系,具体的行为表现还是取决于相关的属性。不过除去有历史包袱的个别属性(比如 select.size
)之外,大多数属性的行为还是符合标准的,详见 Reflecting content attributes in IDL attributes。
当 IDL 属性是 URL 类型时,比如 href
。内容属性会返回 HTML 里写的值,而 IDL 属性会返回完整的 URL,如下:
当 IDL 属性是布尔类型时,比如 checked
。如果元素上存在该属性那么值就是 true,如果不存在则值就是 false。布尔属性要表示 false 只能是完全省略该属性,一旦存在该属性那么值就是 true,哪怕它没值或值为空字符串或值为'false'字符串。如下:
当 IDL 属性是枚举类型时,比如 <input>
元素的 type
属性。一般会给出两种默认状态,缺失值默认值和无效值默认值,如下:
至此,我们介绍了以下内容:
element.setAttribute()
和 element.getAttribute()
element.foo
接下来,让我们看看 HTML 里都有哪些属性。
全局属性是所有 HTML 元素的共有属性,即便它们可能对某些元素没有影响。
我们可以在所有的 HTML 元素上指定全局属性,即便是非标准的 HTML 元素,因为现代浏览器会自动处理那些全局属性,比如带有 hidden
属性的元素会被隐藏。
属性名 | 说明 | |
---|---|---|
最常用 | id , class , style title , tabindex data-* |
|
lang |
||
dir |
枚举属性 | |
交互相关 | hidden , autofocus |
布尔属性 |
draggable , contenteditable |
枚举属性 | |
spellcheck , translate , autocapitalize |
枚举属性 | |
键盘相关 | accesskey |
快捷键 |
inputmode , enterkeyhint |
虚拟键盘,枚举属性 | |
Web Components | is , slot |
|
part , exportparts |
Shadow DOM 相关 | |
内容安全 | nonce |
|
微数据相关 | itemid , itemprop itemref itemscope , itemtype |
contextmenu
已废弃
// https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes
$0.querySelectorAll("dt").forEach(item => console.log(item.innerText));
除了以上基本的全局属性之外,还有 3 类全局属性:
aria-*
系列属性:可访问性相关。此部分比较独立,后面会单独讨论,这里暂不展开了。on*
系列属性:事件处理器相关,比如 onclick
。此部分也暂不展开了,原因同上。xml:lang
和 xml:base
:已弃用,继承自 XHTML,为了向前兼容而保留着。分类 | 属性名 | 关联元素 | 元素说明 |
---|---|---|---|
元数据(10个) | charset http-equiv content |
<meta> |
|
async defer |
<script> |
||
rel | <link> <a> , <area> |
||
media | <link> , <style> <a> , <area> <source> |
||
crossorigin | <script> , <link> <img> , <audio> , <video> |
||
referrerpolicy | <script> , <link> <img> , <area> <iframe> <a> |
||
integrity | <script> , <link> |
||
状态相关(5个) | disabled | <input> , <textarea> , <select> <optgroup> , <option> <button> <fieldset> |
|
required | <input> , <textarea> , <select> |
||
readonly | <input> , <textarea> |
||
checked | <input> |
||
selected | <option> |
||
最常用(7个) | name | <meta> |
元数据 |
<form> <input> , <textarea> , <select> <button> <output> , <fieldset> |
表单控件 | ||
<iframe> , <object> , <param> |
内嵌内容 | ||
<map> |
多媒体资源 | ||
form | <input> , <textarea> , <select> , <button> <label> , <fieldset> , <output> <progress> , <meter> |
表单控件 | |
<object> |
内嵌内容 | ||
src | <script> |
脚本 | |
<img> , <audio> , <video> <source> , <track> |
多媒体 | ||
<iframe> , <embed> |
内嵌内容 | ||
<input> |
|||
type | <script> , <link> , <style> |
元数据 | |
<input> , <button> |
表单控件 | ||
<source> |
多媒体 | ||
<embed> , <object> |
内嵌内容 | ||
<menu> |
交互 | ||
value | <input> , <button> , <option> <progress> , <meter> |
表单控件 | |
<param> |
内嵌 | ||
<li> , <data> |
|||
width height |
<img> , <video> |
多媒体 | |
<canvas> |
脚本画布 | ||
<iframe> <embed> , <object> |
内嵌内容 | ||
<input> |
|||
链接相关(5个) | href | <a> , <area> <link> , <base> |
|
hreflang | <a> , <area> <link> |
||
target | <a> , <area> <base> <form> |
||
ping download |
<a> , <area> |
||
多媒体(18个) | alt | <img> , <area> <input> |
|
decoding ismap |
<img> |
图片 | |
usemap | <img> <object> <input> |
||
coords shape |
<area> |
图片 | |
srcset | <img> , <source> |
图片 | |
sizes | <img> , <source> <link> |
||
controls loop muted autoplay preload buffered |
<audio> , <video> |
音频+视频 | |
poster | <video> |
视频 | |
kind srclang default |
<track> |
字幕 | |
表单(32个) | action method enctype accept-charset novalidate |
<form> |
|
autocomplete | <form> <input> , <select> , <textarea> |
||
accept | <input> |
文件类型 | |
placeholder maxlength minlength dirname |
<input> , <textarea> |
||
size multiple |
<input> , <select> |
||
rows cols wrap |
<textarea> |
||
max | <input> , <meter> , <progress> |
||
min | <input> , <meter> |
||
low high optimum |
<meter> |
||
step capture list pattern |
<input> |
||
for | <label> , <output> |
||
label | <optgroup> , <option> , <track> |
||
formaction formenctype formmethod formnovalidate formtarget |
<input> , <button> |
||
表格(5个) | span | <colgroup> , <col> |
|
scope | <th> |
||
rowspan colspan headers |
<th> , <td> |
||
iframe(3个) | sandbox srcdoc allow |
<iframe> |
内嵌网页 |
其它(6个) | cite | <blockquote> , <q> |
文本引用 |
<del> , <ins> |
文本编辑 | ||
datetime | <del> , <ins> |
||
<time> |
|||
reversed start |
<ol> |
||
open | <details> , <dialog> |
交互 | |
data | <object> |
内嵌内容 | |
实验中(4个) | importance | <script> , <link> |
元数据 |
<img> , <iframe> |
|||
loading | <img> , <iframe> |
||
csp | <iframe> |
||
enterkeyhint | <textarea> contenteditable |
分类 | 属性名 | 关联元素 | 元素说明 |
---|---|---|---|
已过时 | align | <table> <caption> <colgroup> , <col> <thead> , <tbody> , <tfoot> <tr> , <th> , <td> |
建议用 CSS |
bgcolor | <body> <table> , <tbody> , <tfoot> <colgroup> , <col> <tr> , <th> , <td> |
||
<img> |
|||
<iframe> |
|||
<hr> |
|||
background | <body> , <table> , <th> , <td> |
||
border | <table> , <img> , <object> |
||
color | <hr> |
||
已废弃 | manifest | <html> |
|
language | <script> |
||
scoped | <style> |
||
summary | <table> |
||
intrinsicsize | <img> |
上面两个表格都没有列出“已废弃”的 HTML 元素
// https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes
document.querySelectorAll("tbody td:first-child").forEach(td => console.log(td.innerText));
本文介绍了 HTML 元素的属性,重点介绍了属性的两个方面,即内容属性和 IDL 属性,并列出了全局属性和与特定元素关联的属性。
元数据就是描述数据的数据。在 HTML 中,HTML 文档是数据,而它里面的 <head>
元素包含着描述这份文档的数据(比如作者/摘要)。所以,我们常说 <head>
元素包含着元数据,即关于文档的机器可读的信息。
metadata, machine-readable information
属于元数据内容的 HTML 元素有 <meta>
, <title>
, <base>
, <link>
, <style>
, <script>
和 <noscript>
。它们有的是修改文档的显示方式和行为,有的是设置到其它文档的链接,有的是传达了其它信息。
其中 <meta>
, <base>
, <link>
属于空元素(empty element)。空元素是 HTML, SVG 和 MathML 里不能带有任何子节点(即嵌套元素和文本节点)的元素。在 HTML 中,空元素通常是不带结束标签的,也不自闭合,即直接写一个纯粹的开始标签就行。如下:
<meta charset="utf-8">
<base href="https://www.example.com">
<link href="main.css" rel="stylesheet">
其余 4 个都是由一个开始标签和一个结束标签组成的。
<meta>
<meta>
元素表示其它元相关(meta-related)元素没法表示的元数据。它能提供以下类型的元数据:
<meta charset>
:如果设置了 charset
属性,则 <meta>
元素是一个 charset 声明,将给出文档的字符编码<meta name>
:如果设置了 name
属性,则 <meta>
元素提供文档级的元数据,将应用于整个页面<meta http-equiv>
:如果设置了 http-equiv
属性,则 <meta>
元素是一个 pragma 指令,将提供类似 HTTP 头的信息<meta itemprop>
:如果设置了 itemprop
属性,则 <meta>
元素提供用户定义的元数据<meta charset="utf-8">
<meta name="theme-color" content="#4F4F4F">
<meta http-equiv="refresh" content="3;url=https://www.mozilla.org">
<meta>
元素可以有全局属性。其中:
name
属性:在 <meta>
元素上有特定含义,详见下方。itemprop
属性:如果 <meta>
元素上已经有了 charset
, name
或 http-equiv
属性,那就不能再设 itemprop
属性了下面介绍 4 个比较重要的属性。
charset
属性这个属性声明文档的字符编码。如果存在该属性,其值必须是字符串“utf-8”(不区分大小写),因为 UTF-8 是 HTML5 文档的唯一有效编码。声明字符编码的 <meta>
元素必须完全在文档的前 1024 个字节内。
<meta charset="utf-8">
name
属性name
属性和 content
属性一起使用,以 name-value 对的形式提供文档元数据。name
给出元数据的名称,content
给出元数据的值。
标准 | name 名称 |
content 值 |
说明 |
---|---|---|---|
HTML | application-name |
简单的网页不应该定义此项 不同于 <title> 元素 |
|
author generator |
作者 生成页面的软件 |
||
description keywords |
简短而准确的总结. eg.用于书签的默认描述 关键词, 以逗号分隔 |
||
referrer |
控制 HTTP 请求头的 Referer 字段 | ||
no-referrer |
不发 | ||
origin |
发 origin | ||
no-referrer-when-downgrade |
若目标至少与当前页一样安全时发完整的 URL. ie.HTTP(S)→HTTPS 若目标不安全时不发, ie.HTTPS→HTTP 以上是浏览器的默认行为 |
||
strict-origin |
若目标至少与当前页一样安全时发 origin. ie.HTTP(S)→HTTPS 若目标不安全时不发, ie.HTTPS→HTTP |
||
unsafe-URL |
为同源和跨源请求发完整 URL (去除参数) | ||
origin-when-cross-origin |
若同源则发完整 URL (去除参数) 否则只发 origin |
||
same-origin |
若同源则发完整 URL (去除参数) 跨域请求则不发 |
||
strict-origin-when-cross-origin |
若同源则发完整 URL (去除参数) 若目标至少与当前页一样安全时发 origin, ie.HTTP(S)→HTTPS 否则不发 |
||
theme-color |
|||
color-scheme |
normal [light | dark]+ only light |
指定文档兼容的一种或多种颜色方案 eg.浅/深色模式的兼容性和优先顺序 |
|
W3C | viewport |
width height (没浏览器用) |
正整数或以下字符串device-width , device-height |
initial-scale maximum-scale minimum-scale |
正数 [0.0, 10.0] |
||
user-scalable |
yes 或 no |
||
viewport-fit |
auto , contain , cover |
||
尚未 | creator |
创建者 eg.组织/机构 可使用多个 <meta creator="xxx"> |
|
publisher |
发布者 | ||
robots |
index (默认)noindex follow (默认)nofollow |
ALL | |
noarchive nosnippet |
|||
all (即 index, follow )none (即 noindex, nofollow )noimageindex |
|||
nocache (同 noarchive ) |
Bing | ||
googlebot |
robots 的同义词 |
origin = scheme + hostname + port 或
origin = protocol + domain + port
<meta name="description" content="The MDN Web Docs site provides information about Open Web technologies including HTML, CSS, and APIs for both Web sites and progressive web apps.">
<meta name="theme-color" content="#4F4F4F">
<meta name="application-name" content="Google 翻译">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no">
http-equiv
属性定义一个 pragma 指令。该属性之所以被命名为 http-equiv
是因为所有允许的值都是特定的 HTTP 头。
equiv, equivalent, 相等的
http-equiv 名 |
content 值 |
说明 |
---|---|---|
content-security-policy |
content policy 可指定允许的服务 origins 和脚本端点 以防止跨站点脚本攻击 |
|
script-src , script-src-elem , script-src-attr style-src , style-src-elem , style-src-attr img-src , media-src , font-src frame-src , worker-src , child-src prefetch-src , manifest-src connect-src , default-src object-src (算已废弃) |
Fetch 指令 特定资源类型的加载位置 |
|
base-uri sandbox |
Document 指令 策略应用的文档/worker的属性 |
|
form-action navigate-to frame-ancestors |
Navigation 指令 | |
report-to report-uri (即将废弃) |
Reporting 指令 | |
upgrade-insecure-requests (HTTP→HTTPS)trusted-types require-trusted-types-for require-sri-for |
其它指令 | |
referrer (用 Referrer-Policy 替代)block-all-mixed-content plugin-types |
已废弃 | |
content-type |
若指定, 则必须含有字符串text/html; charset=utf-8 |
声明文档的 MIME type 和字符编码 |
x-ua-compatible |
若指定, 则内容必须含有字符串IE=edge |
|
refresh |
页面重新加载的秒数 页面重定向之前的秒数 |
|
default-style |
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta http-equiv="x-dns-prefetch-control" content="on">
content
这个属性包含着 name
或 http-equiv
属性的值,取决于上下文。
<title>
<title>
元素定义文档的标题,显示在浏览器标题栏上或页面选项卡中。它只包含文本,如果内部有标签则会被忽略。
该元素只包含全局属性。
页面的标题内容在一定程度上会影响搜索引擎算法对于本页面的搜索排序。一般来说,较长的描述性标题比短标题或通用标题表现更好。此外,好的标题也能在搜索结果页面更好地吸引用户的注意。
SEO, Search Engine Optimization
关于标题的一些建议/注意事项:
<base>
<base>
元素指定文档中所有相对 URL 的 base URL。
我们可以通过 Node 的 baseURI
属性访问到页面的 base URL。如果没有设置 <base>
元素,那么 baseURI
的默认值就是 location.href
。
该元素可以有全局数据。此外:
属性 | 值 | 说明 |
---|---|---|
href |
绝对/相对 URL | 相对 URL 的 base URL |
target |
可选的 keywords:_self _blank _parent _top |
keyword 或 author-defined 名字 当 <a> , <area> , <form> 元素没有显式指定 target 属性时 |
说明:
href
或 target
属性,则该元素必须位于其它具有 URL 属性值的元素之前,比如 <link href="">
<base>
元素,如果写了多个,那只取第一个 href
和第一个 target
属性<a href="#xxx">
是基于 <base>
解析的(会触发一个 HTTP 请求)<link>
<link>
元素可指定外部资源,比如最常用的样式表、站点图标(favicon/主屏幕/移动端的应用程序)等。
该元素可以有全局属性。其中,title
属性有特殊的语义,当在 <link rel="stylesheet">
上使用时表示定义了默认或备用样式表/替代样式表(但它的浏览器兼容性不好,建议同功能的使用 CSS 媒体查询)。
还可以有以下属性:
分类 | 属性 | 值 | 说明 |
---|---|---|---|
标准 | type |
eg.font/woff2 image/png audio/ogg |
MIME 类型(内容类型/媒体类型) Multipurpose Internet Mail Extensions 格式: type/subtype type/subtype;parameter=value type 有以下:text application image audio video font example model |
rel |
可以在 <link> 中使用的值有:stylesheet icon manifest license prefetch preconnect preload prerender dns-prefetch modulepreload shortlink (短链接)search (相关搜索页)author (包含联系方式的页面)help (帮助页)pingback (网页的评论/引用页)canonical (规范链接, SEO)next (下一个资源)prev (上一个资源)alternate (替代样式表)archives (已废弃)first (已废弃)last (已废弃)index (已废弃)sidebar (已废弃)up (已废弃) |
指明和当前文档的 relationship 以空格分隔的《link type》值 以下元素会用到: <link> , <a> , <area> , <form> |
|
href |
|||
hreflang |
href 的语言 |
||
media |
媒体类型/查询 | ||
sizes |
仅当 rel 中包含 icon 时 |
||
disabled |
布尔属性(是否存在) | 仅对 rel="stylesheet" |
|
imagesizes imagesrcset |
仅对 rel="preload" as="image" |
||
as |
script , style , font image , video , audio , track object , embed , document worker fetch |
仅对 rel="preload|prefetch" 指定了 <link> 正在加载的内容类型 |
|
crossorigin |
anonymous use-credentials |
跨域 | |
integrity |
包含内联元数据 eg.base64 编码的文件 |
||
referrerpolicy |
no-referrer origin unsafe-url no-referrer-when-downgrade origin-when-cross-origin |
当获取资源时用哪个 referrer | |
prefetch |
标识下一次导航可能需要的资源 | ||
非标准 | methods (不推荐)target (不推荐) |
||
已废弃 | charset (已废弃)rev (已废弃) |
<link href="style.css" rel="stylesheet">
<link href="print.css" rel="stylesheet" media="print">
<link href="mobile.css" rel="stylesheet" media="screen and (max-width: 600px)">
<link rel="icon" href="favicon.ico">
<link rel="apple-touch-icon-precomposed" href="apple-icon-114.png" type="image/png" sizes="114x114">
<link rel="apple-touch-icon-precomposed" href="favicon72.png" type="image/png" sizes="72x72">
<link rel="preload" href="myFont.woff2" as="font" type="font/woff2" crossorigin="anonymous">
rel, relationship
<style>
该元素可以有全局属性。此外:
属性 | 说明 |
---|---|
media title |
同 <link> 元素的 |
nonce |
加密随机数(只使用一次) |
type (已废弃)scoped (已废弃) |
<script>
该元素可以有全局属性。此外:
属性 | 值 | 说明 |
---|---|---|
type |
无(忽略) JavaScript MIME type |
HTML5 规范建议直接忽略该属性 默认就是 JavaScript 脚本 |
module |
模块 | |
其它值 | 会被当成数据块 | |
src |
||
async defer nomodule |
布尔属性 | |
referrerpolicy crossorigin integrity nonce |
Referer header 跨域相关, window.onerror 子资源完整性, 内联元数据 内容安全策略, 随机加密的数字< |
|
charset (已废弃)language (已废弃) |
<script src="javascript.js"></script>
<script>
console.log("Hello World!");
</script>
<script type="module" src="main.js"></script>
<script nomodule src="fallback.js"></script>
<!-- 嵌入数据(服务器生成)-->
<script id="data" type="application/json">{"userId":111, "userName":"Li" "memberSince":"2000-01-01T00:00:00.000Z"}</script>
<noscript>
<noscript>
定义的 HTML 内容会显示在页面上,当脚本的 type
不支持时,或者当浏览器禁用脚本功能时。
该元素只能有全局属性。
本文介绍了 HTML 元数据,共有 7 个 HTML 元素,内容包括:
<meta>
内容很多
<meta charset="">
<meta name="" content="">
<meta http-equiv="" content="">
<meta itemprop="">
<title>
(与 SEO)<base>
href
, target
<link>
外部资源
type
, rel
, href
, hreflang
media
sizes
, disabled
, imagesizes
, imagesrcset
, as
crossorigin
, integrity
, referrerpolicy
, prefetch
<style>
media
, title
nonce
<script>
脚本/亦可内联
src
, type
async
, defer
, nomodule
crossorigin
, integrity
, referrerpolicy
, nonce
<noscript>
目录
element.setAttribute()
和element.getAttribute()
element.foo
aria-*
系列属性(未展开)on*
系列属性(未展开)xml:lang
和xml:base
(已废弃)<meta>
内容很多<meta charset="">
<meta name="" content="">
<meta http-equiv="" content="">
<meta itemprop="">
<title>
(与 SEO)<base>
href
,target
<link>
外部资源type
,rel
,href
,hreflang
media
sizes
,disabled
,imagesizes
,imagesrcset
,as
crossorigin
,integrity
,referrerpolicy
,prefetch
<style>
media
,title
nonce
<script>
脚本/亦可内联src
,type
async
,defer
,nomodule
crossorigin
,integrity
,referrerpolicy
,nonce
<noscript>