HTML Standard
4.6
Links
4.6.1
Introduction
4.6.2
Links created by
and
area
elements
4.6.3
API for hyperlink elements
4.6.4
API for
and
area
elements
4.6.5
Following hyperlinks
4.6.6
Downloading resources
4.6.7
Hyperlink auditing
4.6.7.1
The `
Ping-From
` and `
Ping-To
` headers
4.6.8
Link types
4.6.8.1
Link type "
alternate
4.6.8.2
Link type "
author
4.6.8.3
Link type "
4.6.8.4
Link type "
canonical
4.6.8.5
Link type "
dns-prefetch
4.6.8.6
Link type "
expect
4.6.8.7
Link type "
external
4.6.8.8
Link type "
help
4.6.8.9
Link type "
icon
4.6.8.10
Link type "
license
4.6.8.11
Link type "
manifest
4.6.8.12
Link type "
modulepreload
4.6.8.13
Link type "
nofollow
4.6.8.14
Link type "
noopener
4.6.8.15
Link type "
noreferrer
4.6.8.16
Link type "
opener
4.6.8.17
Link type "
pingback
4.6.8.18
Link type "
preconnect
4.6.8.19
Link type "
prefetch
4.6.8.20
Link type "
preload
4.6.8.21
Link type "
privacy-policy
4.6.8.22
Link type "
4.6.8.23
Link type "
stylesheet
4.6.8.24
Link type "
tag
4.6.8.25
Link Type "
terms-of-service
4.6.8.26
Sequential link types
4.6.8.26.1
Link type "
next
4.6.8.26.2
Link type "
prev
4.6.8.27
Other link types
4.6
Links
4.6.1
Introduction
Links are a conceptual construct, created by
area
form
, and
link
elements, that
represent
a connection between two resources, one of which is the current
Document
. There are
three kinds of links in HTML:
Links to
external resources
These are links to resources that are to be used to augment the current document,
generally automatically processed by the user agent. All
external resource links
have a
fetch and process the linked resource
algorithm which describes how the resource is obtained.
Hyperlinks
These are links to other resources that are generally exposed to the user by the user
agent so that the user can cause the user agent to
navigate
to those resources, e.g.
to visit them in a browser or download them.
Internal resource links
These are links to resources within the current document, used to give those resources
special meaning or behavior.
For
link
elements with an
href
attribute and a
rel
attribute, links must be created for the keywords of the
rel
attribute, as defined for those keywords in the
link types
section.
Similarly, for
and
area
elements with an
href
attribute and a
rel
attribute, links must be created for the keywords of the
rel
attribute as defined for those keywords in the
link types
section. Unlike
link
elements, however,
and
area
elements with an
href
attribute that either do not have a
rel
attribute, or
whose
rel
attribute has no keywords that are defined as
specifying
hyperlinks
, must also create a
hyperlink
This implied hyperlink has no special meaning (it has no
link type
beyond linking the element's
node document
to the resource given by the element's
href
attribute.
Similarly, for
form
elements with a
rel
attribute, links must be created for the keywords of the
rel
attribute as defined for those keywords in the
link types
section.
form
elements that do not have a
rel
attribute,
or whose
rel
attribute has no keywords that are defined as
specifying
hyperlinks
, must also create a
hyperlink
hyperlink
can have one or more
hyperlink
annotations
that modify the processing semantics of that hyperlink.
4.6.2
Links created by
and
area
elements
The
href
attribute on
and
area
elements must have a value that is a
valid
URL potentially surrounded by spaces
The
href
attribute on
and
area
elements is not required; when those elements do not have
href
attributes they do not create hyperlinks.
The
target
attribute, if present, must be a
valid navigable target name or keyword
. It gives the
name of the
navigable
that will be used. User agents use this
name when
following hyperlinks
The
attribute, if present, indicates that the author intends the hyperlink to be used for
downloading a resource
. The attribute may have a value; the
value, if any, specifies the default filename that the author recommends for use in labeling the
resource in a local file system. There are no restrictions on allowed values, but authors are
cautioned that most file systems have limitations with regard to what punctuation is supported in
filenames, and user agents are likely to adjust filenames accordingly.
Element/a#attr-ping
Support in all current engines.
Firefox
🔰 1+
Safari
6+
Chrome
12+
Opera
Edge
79+
Edge (Legacy)
17+
Internet Explorer
No
Firefox Android
Safari iOS
Chrome Android
WebView Android
≤37+
Samsung Internet
Opera Android
The
ping
attribute, if present, gives the URLs of the
resources that are interested in being notified if the user follows the hyperlink. The value must
be a
set of space-separated tokens
, each of which must be a
valid non-empty
URL
whose
scheme
is an
HTTP(S)
scheme
. The value is used by the user agent for
hyperlink
auditing
The
rel
attribute on
and
area
elements controls what kinds of links the elements create. The attribute's value must be an
unordered set of unique space-separated tokens
. The
allowed
keywords and their meanings
are defined below.
rel
's
supported tokens
are the keywords defined in
HTML link types
which are allowed on
and
area
elements, impact the processing model, and are supported by the user agent. The possible
supported tokens
are
noreferrer
noopener
, and
opener
rel
's
supported tokens
must only include the tokens from this
list that the user agent implements the processing model for.
The
rel
attribute has no default value. If the
attribute is omitted or if none of the values in the attribute are recognized by the user agent,
then the document has no particular relationship with the destination resource other than there
being a hyperlink between the two.
The
hreflang
attribute on
elements that create
hyperlinks
, if
present, gives the language of the linked resource. It is purely advisory. The value must be a
valid BCP 47 language tag.
[BCP47]
User agents must not consider this
attribute authoritative — upon fetching the resource, user agents must use only language
information associated with the resource to determine its language, not metadata included in the
link to the resource.
The
type
attribute, if present, gives the
MIME type
of the linked resource. It is purely
advisory. The value must be a
valid MIME type string
. User agents must
not consider the
type
attribute authoritative —
upon fetching the resource, user agents must not use metadata included in the link to the resource
to determine its type.
The
referrerpolicy
attribute is a
referrer
policy attribute
. Its purpose is to set the
referrer policy
used when
following hyperlinks
[REFERRERPOLICY]
When an
or
area
element's
activation behavior
is
invoked, the user agent may allow the user to indicate a preference regarding whether the
hyperlink is to be used for
or whether the resource it
specifies is to be downloaded.
In the absence of a user preference, the default should be navigation if the element has no
attribute, and should be to download the
specified resource if it does.
The
activation behavior
of an
or
area
element
element
given an event
event
is:
If
element
has no
href
attribute,
then return.
Let
hyperlinkSuffix
be null.
If
element
is an
element, and
event
's
target
is an
img
with an
ismap
attribute specified, then:
Let
and
be 0.
If
event
's
isTrusted
attribute is
initialized to true, then set
to the distance in
CSS
pixels
from the left edge of the image to the location of the click, and set
to the distance in
CSS pixels
from the top edge of the
image to the location of the click.
If
is negative, set
to 0.
If
is negative, set
to 0.
Set
hyperlinkSuffix
to the concatenation of U+003F (?), the value of
expressed as a base-ten integer using
ASCII digits
, U+002C (,), and
the value of
expressed as a base-ten integer using
ASCII
digits
Let
userInvolvement
be
event
's
user
navigation involvement
If the user has expressed a preference to download the hyperlink, then set
userInvolvement
to "
browser UI
".
That is, if the user has expressed a specific preference for downloading, this
no longer counts as merely "
activation
".
If
element
has a
attribute, or if the user has expressed a preference to download the hyperlink, then
download the hyperlink
created by
element
with
hyperlinkSuffix
set to
hyperlinkSuffix
and
userInvolvement
set to
userInvolvement
Otherwise,
follow the hyperlink
created by
element
with
hyperlinkSuffix
set to
hyperlinkSuffix
and
userInvolvement
set to
userInvolvement
4.6.3
API for hyperlink elements
interface
mixin
HyperlinkElementUtils
readonly
attribute
USVString
origin
CEReactions
attribute
USVString
protocol
CEReactions
attribute
USVString
username
CEReactions
attribute
USVString
password
CEReactions
attribute
USVString
host
CEReactions
attribute
USVString
hostname
CEReactions
attribute
USVString
port
CEReactions
attribute
USVString
pathname
CEReactions
attribute
USVString
CEReactions
attribute
USVString
hash
};
hyperlink
origin
HTMLAnchorElement/origin
Support in all current engines.
Firefox
26+
Safari
5.1+
Chrome
8+
Opera
Edge
79+
Edge (Legacy)
17+
Internet Explorer
No
Firefox Android
Safari iOS
Chrome Android
WebView Android
3+
Samsung Internet
Opera Android
HTMLAreaElement/origin
Support in all current engines.
Firefox
26+
Safari
10+
Chrome
32+
Opera
Edge
79+
Edge (Legacy)
17+
Internet Explorer
No
Firefox Android
Safari iOS
Chrome Android
WebView Android
37+
Samsung Internet
Opera Android
Returns the hyperlink's URL's origin.
hyperlink
protocol
HTMLAnchorElement/protocol
Support in all current engines.
Firefox
1+
Safari
1+
Chrome
1+
Opera
Edge
79+
Edge (Legacy)
12+
Internet Explorer
5.5+
Firefox Android
Safari iOS
Chrome Android
WebView Android
Samsung Internet
Opera Android
HTMLAreaElement/protocol
Support in all current engines.
Firefox
1+
Safari
1+
Chrome
1+
Opera
Edge
79+
Edge (Legacy)
12+
Internet Explorer
5.5+
Firefox Android
Safari iOS
Chrome Android
WebView Android
Samsung Internet
Opera Android
Returns the hyperlink's URL's scheme.
Can be set, to change the URL's scheme.
hyperlink
username
HTMLAnchorElement/username
Support in all current engines.
Firefox
26+
Safari
10+
Chrome
32+
Opera
Edge
79+
Edge (Legacy)
Internet Explorer
No
Firefox Android
Safari iOS
Chrome Android
WebView Android
Samsung Internet
Opera Android
HTMLAreaElement/username
Support in all current engines.
Firefox
26+
Safari
10+
Chrome
32+
Opera
Edge
79+
Edge (Legacy)
Internet Explorer
No
Firefox Android
Safari iOS
Chrome Android
WebView Android
Samsung Internet
Opera Android
Returns the hyperlink's URL's username.
Can be set, to change the URL's username.
hyperlink
password
HTMLAnchorElement/password
Support in all current engines.
Firefox
26+
Safari
10+
Chrome
32+
Opera
Edge
79+
Edge (Legacy)
Internet Explorer
No
Firefox Android
Safari iOS
Chrome Android
WebView Android
Samsung Internet
Opera Android
HTMLAreaElement/password
Support in all current engines.
Firefox
26+
Safari
10+
Chrome
32+
Opera
Edge
79+
Edge (Legacy)
Internet Explorer
No
Firefox Android
Safari iOS
Chrome Android
WebView Android
Samsung Internet
Opera Android
Returns the hyperlink's URL's password.
Can be set, to change the URL's password.
hyperlink
host
HTMLAnchorElement/host
Support in all current engines.
Firefox
1+
Safari
1+
Chrome
1+
Opera
Edge
79+
Edge (Legacy)
12+
Internet Explorer
5.5+
Firefox Android
Safari iOS
Chrome Android
WebView Android
Samsung Internet
Opera Android
HTMLAreaElement/host
Support in all current engines.
Firefox
1+
Safari
1+
Chrome
1+
Opera
Edge
79+
Edge (Legacy)
12+
Internet Explorer
5.5+
Firefox Android
Safari iOS
Chrome Android
WebView Android
Samsung Internet
Opera Android
Returns the hyperlink's URL's host and port (if different from the default port for the
scheme).
Can be set, to change the URL's host and port.
hyperlink
hostname
HTMLAnchorElement/hostname
Support in all current engines.
Firefox
1+
Safari
1+
Chrome
1+
Opera
Edge
79+
Edge (Legacy)
12+
Internet Explorer
5.5+
Firefox Android
Safari iOS
Chrome Android
WebView Android
Samsung Internet
Opera Android
HTMLAreaElement/hostname
Support in all current engines.
Firefox
1+
Safari
1+
Chrome
1+
Opera
Edge
79+
Edge (Legacy)
12+
Internet Explorer
5.5+
Firefox Android
Safari iOS
Chrome Android
WebView Android
Samsung Internet
Opera Android
Returns the hyperlink's URL's host.
Can be set, to change the URL's host.
hyperlink
port
HTMLAnchorElement/port
Support in all current engines.
Firefox
1+
Safari
1+
Chrome
1+
Opera
Edge
79+
Edge (Legacy)
12+
Internet Explorer
5.5+
Firefox Android
Safari iOS
Chrome Android
WebView Android
Samsung Internet
Opera Android
HTMLAreaElement/port
Support in all current engines.
Firefox
1+
Safari
1+
Chrome
1+
Opera
Edge
79+
Edge (Legacy)
12+
Internet Explorer
5.5+
Firefox Android
Safari iOS
Chrome Android
WebView Android
Samsung Internet
Opera Android
Returns the hyperlink's URL's port.
Can be set, to change the URL's port.
hyperlink
pathname
HTMLAnchorElement/pathname
Support in all current engines.
Firefox
1+
Safari
1+
Chrome
1+
Opera
Edge
79+
Edge (Legacy)
12+
Internet Explorer
5.5+
Firefox Android
Safari iOS
Chrome Android
WebView Android
Samsung Internet
Opera Android
HTMLAreaElement/pathname
Support in all current engines.
Firefox
1+
Safari
1+
Chrome
1+
Opera
Edge
79+
Edge (Legacy)
12+
Internet Explorer
5.5+
Firefox Android
Safari iOS
Chrome Android
WebView Android
Samsung Internet
Opera Android
Returns the hyperlink's URL's path.
Can be set, to change the URL's path.
hyperlink
HTMLAnchorElement/search
Support in all current engines.
Firefox
1+
Safari
1+
Chrome
1+
Opera
Edge
79+
Edge (Legacy)
12+
Internet Explorer
5.5+
Firefox Android
Safari iOS
Chrome Android
WebView Android
Samsung Internet
Opera Android
HTMLAreaElement/search
Support in all current engines.
Firefox
1+
Safari
1+
Chrome
1+
Opera
Edge
79+
Edge (Legacy)
12+
Internet Explorer
5.5+
Firefox Android
Safari iOS
Chrome Android
WebView Android
Samsung Internet
Opera Android
Returns the hyperlink's URL's query (includes leading "
" if
non-empty).
Can be set, to change the URL's query (ignores leading "
").
hyperlink
hash
HTMLAnchorElement/hash
Support in all current engines.
Firefox
1+
Safari
1+
Chrome
1+
Opera
Edge
79+
Edge (Legacy)
12+
Internet Explorer
5.5+
Firefox Android
Safari iOS
Chrome Android
WebView Android
Samsung Internet
Opera Android
HTMLAreaElement/hash
Support in all current engines.
Firefox
1+
Safari
1+
Chrome
1+
Opera
Edge
79+
Edge (Legacy)
12+
Internet Explorer
5.5+
Firefox Android
Safari iOS
Chrome Android
WebView Android
Samsung Internet
Opera Android
Returns the hyperlink's URL's fragment (includes leading "
" if
non-empty).
Can be set, to change the URL's fragment (ignores leading "
").
An element implementing the
HyperlinkElementUtils
mixin has an associated
url
(null or a
URL
). It is initially null.
An element implementing the
HyperlinkElementUtils
mixin has the following
extract an origin
steps:
If
this
's
url
is null, then
return null.
Return
this
's
url
's
origin
An element implementing the
HyperlinkElementUtils
mixin must have an associated
set the url
algorithm.
When elements implementing the
HyperlinkElementUtils
mixin are created, the user
agent must
set the url
An element implementing the
HyperlinkElementUtils
mixin has an associated
reinitialize url
algorithm, which runs these
steps:
If the element's
url
is non-null, its
scheme
is "
blob
", and it has an
opaque path
, then terminate these steps.
Set the url
An element implementing the
HyperlinkElementUtils
mixin must have an associated
update
href
algorithm.
The
origin
getter steps are:
Reinitialize url
If
this
's
url
is null, return the
empty string.
Return the
serialization
of
this
's
url
's
origin
The
protocol
getter steps are:
Reinitialize url
If
this
's
url
is null, return
".
Return
this
's
url
's
scheme
, followed by "
".
The
protocol
setter steps are:
Reinitialize url
If
this
's
url
is null, then
return.
Basic URL parse
the given value, followed by "
", with
this
's
url
as
url
and
scheme start state
as
state override
Because the URL parser ignores multiple consecutive colons, providing a value
of "
https:
" (or even "
https::::
") is the same as
providing a value of "
https
".
Update
href
The
username
getter steps are:
Reinitialize url
If
this
's
url
is null, return the
empty string.
Return
this
's
url
's
username
The
username
setter steps are:
Reinitialize url
Let
url
be
this
's
url
If
url
is null or
url
cannot have a username/password/port
, then return.
Set the username
, given
url
and the given value.
Update
href
The
password
getter steps are:
Reinitialize url
Let
url
be
this
's
url
If
url
is null, then return the empty string.
Return
url
's
password
The
password
setter steps are:
Reinitialize url
Let
url
be
this
's
url
If
url
is null or
url
cannot have a username/password/port
, then return.
Set the password
, given
url
and the given value.
Update
href
The
host
getter steps are:
Reinitialize url
Let
url
be
this
's
url
If
url
or
url
's
host
is null,
return the empty string.
If
url
's
port
is null, return
url
's
host
serialized
Return
url
's
host
serialized
, followed by "
" and
url
's
port
serialized
The
host
setter steps are:
Reinitialize url
Let
url
be
this
's
url
If
url
is null or
url
has an
opaque path
, then
return.
Basic URL parse
the given value, with
url
as
url
and
host
state
as
state
override
Update
href
The
hostname
getter steps are:
Reinitialize url
Let
url
be
this
's
url
If
url
or
url
's
host
is null,
return the empty string.
Return
url
's
host
serialized
The
hostname
setter steps are:
Reinitialize url
Let
url
be
this
's
url
If
url
is null or
url
has an
opaque path
, then
return.
Basic URL parse
the given value, with
url
as
url
and
hostname
state
as
state
override
Update
href
The
port
getter steps are:
Reinitialize url
Let
url
be
this
's
url
If
url
or
url
's
port
is null,
return the empty string.
Return
url
's
port
serialized
The
port
setter steps are:
Reinitialize url
Let
url
be
this
's
url
If
url
is null or
url
cannot have a username/password/port
, then return.
If the given value is the empty string, then set
url
's
port
to null.
Otherwise,
basic URL parse
the given value, with
url
as
url
and
port
state
as
state
override
Update
href
The
pathname
getter steps are:
Reinitialize url
Let
url
be
this
's
url
If
url
is null, then return the empty string.
Return the result of
URL path serializing
url
The
pathname
setter steps are:
Reinitialize url
Let
url
be
this
's
url
If
url
is null or
url
has an
opaque path
, then
return.
Set
url
's
path
to the empty
list.
Basic URL parse
the given value, with
url
as
url
and
path start
state
as
state
override
Update
href
The
getter steps are:
Reinitialize url
Let
url
be
this
's
url
If
url
is null, or
url
's
query
is either null or the empty string, return the empty
string.
Return "
", followed by
url
's
query
The
setter steps are:
Reinitialize url
Let
url
be
this
's
url
If
url
is null, terminate these steps.
If the given value is the empty string, set
url
's
query
to null.
Otherwise:
Let
input
be the given value with a single leading "
removed, if any.
Set
url
's
query
to the empty
string.
Basic URL parse
input
, with
url
as
url
and
query
state
as
state
override
Update
href
The
hash
getter steps are:
Reinitialize url
Let
url
be
this
's
url
If
url
is null, or
url
's
fragment
is either null or the empty string, return the
empty string.
Return "
", followed by
url
's
fragment
The
hash
setter steps are:
Reinitialize url
Let
url
be
this
's
url
If
url
is null, then return.
If the given value is the empty string, set
url
's
fragment
to null.
Otherwise:
Let
input
be the given value with a single leading "
removed, if any.
Set
url
's
fragment
to the empty
string.
Basic URL parse
input
, with
url
as
url
and
fragment
state
as
state
override
Update
href
4.6.4
API for
and
area
elements
interface
mixin
HTMLHyperlinkElementUtils
CEReactions
ReflectSetter
stringifier
attribute
USVString
href
};
hyperlink
toString()
hyperlink
href
HTMLAnchorElement/href
Support in all current engines.
Firefox
1+
Safari
1+
Chrome
1+
Opera
12.1+
Edge
79+
Edge (Legacy)
12+
Internet Explorer
5.5+
Firefox Android
Safari iOS
Chrome Android
WebView Android
Samsung Internet
Opera Android
12.1+
HTMLAnchorElement/toString
Support in all current engines.
Firefox
22+
Safari
3+
Chrome
52+
Opera
Edge
79+
Edge (Legacy)
12+
Internet Explorer
5.5+
Firefox Android
Safari iOS
1+
Chrome Android
WebView Android
Samsung Internet
Opera Android
HTMLAreaElement/href
Support in all current engines.
Firefox
1+
Safari
1+
Chrome
1+
Opera
12.1+
Edge
79+
Edge (Legacy)
12+
Internet Explorer
5.5+
Firefox Android
Safari iOS
Chrome Android
WebView Android
Samsung Internet
Opera Android
12.1+
HTMLAreaElement/toString
Support in all current engines.
Firefox
22+
Safari
10.1+
Chrome
32+
Opera
Edge
79+
Edge (Legacy)
12+
Internet Explorer
5.5+
Firefox Android
Safari iOS
Chrome Android
WebView Android
Samsung Internet
Opera Android
Returns the hyperlink's URL.
Can be set, to change the URL.
The
href
getter steps are:
Reinitialize url
Let
url
be
this
's
url
If
url
is null and
this
has no
href
content attribute, return the empty string.
Otherwise, if
url
is null, return
this
's
href
content attribute's value.
Return
url
serialized
The
HTML element insertion steps
for
and
area
elements, given
insertedNode
, are:
If
insertedNode
is not
connected
, then return.
Consider speculative loads
given
insertedNode
's
node
document
The
HTML element removing steps
for
and
area
elements,
given
removedNode
isSubtreeRoot
, and
oldAncestor
are:
If
oldAncestor
is not
connected
, then return.
Consider speculative loads
given
oldAncestor
's
node
document
The
HTML element moving steps
for
and
area
elements,
given
movedNode
, are:
Consider speculative loads
given
movedNode
's
node
document
The following
attribute change
steps
, given
element
localName
oldValue
value
, and
namespace
, are used for all
and
area
elements:
If
namespace
is not null, then return.
If
oldValue
equals
value
, then return.
If
localName
is
href
, then
set the url
given
element
This is only observable for
blob:
URLs as
parsing
them involves a
Blob URL Store
lookup.
If
localName
is
href
referrerpolicy
, or
rel
, then
consider speculative loads
given
element
's
node document
To
update
href
for an
HTMLAnchorElement
or
HTMLAreaElement
element, set the element's
href
content attribute's value to the element's
url
serialized
The
set the url
algorithm for
HTMLAnchorElement
and
HTMLAreaElement
elements is as follows:
Set this element's
url
to null.
If this element's
href
content attribute is
absent, then return.
Let
url
be the result of
encoding-parsing a URL
given this
element's
href
content attribute's value, relative to
this element's
node document
If
url
is not failure, then set this element's
url
to
url
4.6.5
Following hyperlinks
An element
element
cannot navigate
if any of the following are true:
element
's
node document
is not
fully active
or
element
is not an
element and is not
connected
This is also used by
form submission
for
the
form
element. The exception for
elements is for compatibility with
web content.
To
get an element's noopener
, given an
area
, or
form
element
element
, a
URL record
url
, and a
string
target
, perform the following steps. They return a boolean.
If
element
's
link types
include the
noopener
or
noreferrer
keyword, then return true.
If
element
's
link types
do not include the
opener
keyword and
target
is an
ASCII case-insensitive
match for "
_blank
", then return
true.
If
url
's
blob URL entry
is not
null:
Let
blobOrigin
be
url
's
blob URL entry
's
environment
's
origin
Let
topLevelOrigin
be
element
's
relevant settings
object
's
top-level origin
If
blobOrigin
is not
same site
with
topLevelOrigin
then return true.
Return false.
To
follow the hyperlink
created by an element
subject
, given an optional
hyperlinkSuffix
(default null) and an
optional
userInvolvement
(default "
none
"):
If
subject
cannot navigate
, then return.
Let
targetAttributeValue
be the empty string.
If
subject
is an
or
area
element, then set
targetAttributeValue
to the result of
getting
an element's target
given
subject
Let
urlRecord
be the result of
encoding-parsing a URL
given
subject
's
href
attribute value, relative to
subject
's
node document
If
urlRecord
is failure, then return.
Let
noopener
be the result of
getting
an element's noopener
with
subject
urlRecord
, and
targetAttributeValue
Let
targetNavigable
be the first return value of applying
the rules for
choosing a navigable
given
targetAttributeValue
subject
's
node navigable
, and
noopener
If
targetNavigable
is null, then return.
Let
urlString
be the result of applying the
URL serializer
to
urlRecord
If
hyperlinkSuffix
is non-null, then append it to
urlString
Navigate
targetNavigable
to
urlString
using
subject
's
node document
, with
referrerPolicy
set to
subject
's
hyperlink referrer policy
userInvolvement
set to
userInvolvement
, and
sourceElement
set to
subject
Unlike many other types of navigations, following hyperlinks does not have
special "
replace
" behavior for when
documents are not
completely loaded
. This is true for both user-initiated instances
of following hyperlinks, as well as script-triggered ones via, e.g.,
aElement.click()
The
hyperlink referrer policy
for an element
subject
is the value
returned by the following steps:
If
subject
's
link
types
includes the
noreferrer
keyword, then return
no-referrer
".
Return the current state of
subject
's
referrerpolicy
content attribute.
4.6.6
Downloading resources
HTMLAnchorElement/download
Support in all current engines.
Firefox
20+
Safari
10.1+
Chrome
15+
Opera
Edge
79+
Edge (Legacy)
13+
Internet Explorer
No
Firefox Android
Safari iOS
Chrome Android
WebView Android
Samsung Internet
Opera Android
In some cases, resources are intended for later use rather than immediate viewing. To indicate
that a resource is intended to be downloaded for use later, rather than immediately used, the
attribute can be specified on the
or
area
element that creates the
hyperlink
to that
resource.
The attribute can furthermore be given a value, to specify the filename that user agents are
to use when storing the resource in a file system. This value can be overridden by the `
Content-Disposition
` HTTP header's filename parameters.
[RFC6266]
In cross-origin situations, the
attribute has to be combined with the `
Content-Disposition
` HTTP header, specifically with the
attachment
disposition type, to avoid the user being warned of possibly
nefarious activity. (This is to protect users from being made to download sensitive personal or
confidential information without their full understanding.)
To
download the hyperlink
created by an
element
subject
, given an optional
hyperlinkSuffix
(default null) and an
optional
userInvolvement
(default
none
"):
If
subject
cannot navigate
, then return.
If
subject
's
node document
's
active
sandboxing flag set
has the
sandboxed downloads browsing context flag
set,
then return.
Let
urlString
be the result of
encoding-parsing-and-serializing a
URL
given
subject
's
href
attribute
value, relative to
subject
's
node document
If
urlString
is failure, then return.
If
hyperlinkSuffix
is non-null, then append it to
urlString
If
userInvolvement
is not "
browser UI
",
then:
Assert
subject
has a
attribute.
Let
be
subject
's
relevant global object
's
navigation API
Let
filename
be the value of
subject
's
attribute.
Let
continue
be the result of
firing a download request
navigate
event
at
with
destinationURL
set to
urlString
userInvolvement
set to
userInvolvement
sourceElement
set to
subject
, and
filename
set to
filename
If
continue
is false, then return.
Inform the navigation API about aborting navigation
given
subject
's
node navigable
Run these steps
in parallel
Optionally, the user agent may abort these steps, if it believes doing so would
safeguard the user from a potentially hostile download.
Let
request
be a new
request
whose
URL
is
urlString
client
is
entry settings object
initiator
is "
",
destination
is the empty string, and whose
synchronous flag
and
use-URL-credentials flag
are set.
Let
response
be the result of
fetching
request
Handle as a download
response
with
subject
's
node navigable
and null.
To
handle as a download
response
response
with a
navigable
navigable
and a
navigation ID
or null
navigationId
Let
suggestedFilename
be the result of
getting the suggested
filename
for
response
Let
download behavior
be the result of
WebDriver BiDi download will
begin
with
navigable
and a new
WebDriver BiDi navigation status
whose
id
is
navigationId
status
is "
pending
",
url
is
response
's
URL
, and
suggestedFilename
is
suggestedFilename
If
download behavior
is not null and
download behavior
's
allowed
is false:
Invoke
WebDriver BiDi download end
with
navigable
and a new
WebDriver BiDi navigation status
whose
id
is
navigationId
status
is "
canceled
",
url
is
response
's
URL
Return.
If
download behavior
is not null, let
destinationFolder
be
download behavior
's
destinationFolder
Run these steps
in parallel
Run
implementation-defined
steps to save
response
for later use.
If
destinationFolder
is not null, the user agent should save the file to that path.
If the user agent needs a filename, the user agent should use the
suggestedFilename
If any of the following are true:
the download is canceled by the user;
the download is canceled by the user agent;
an error occurs (for example, a network error, not enough storage, an unavailable
destination folder);
then:
Invoke
WebDriver BiDi download end
with
navigable
and a new
WebDriver BiDi navigation status
whose
id
is
navigationId
status
is "
canceled
",
url
is
response
's
URL
Return.
When the download completes successfully, invoke
WebDriver BiDi download
end
with
navigable
and a new
WebDriver BiDi navigation status
whose
id
is
navigationId
status
is "
complete
",
downloadedFilepath
is an absolute path
of the downloaded file if available, otherwise null,
url
is
response
's
URL
To
get the suggested filename
for a
response
response
This algorithm is intended to mitigate security dangers involved in downloading
files from untrusted sites, and user agents are strongly urged to follow it.
Let
filename
be the undefined value.
If
response
has a `
Content-Disposition
` header, that header specifies the
attachment
disposition type, and the header includes filename information,
then let
filename
have the value specified by the header, and jump to the step labeled
sanitize
below.
[RFC6266]
Let
interface origin
be the
origin
of the
Document
in which the
or
navigate
action resulting in the
download was initiated, if any.
Let
response origin
be the
origin
of the URL of
response
, unless that URL's
scheme
component
is
data
, in which case let
response origin
be the same as the
interface origin
, if any.
If there is no
interface origin
, then let
trusted operation
be true.
Otherwise, let
trusted operation
be true if
response origin
is the
same origin
as
interface origin
, and false otherwise.
If
trusted operation
is true and
response
has a `
Content-Disposition
` header and that header includes
filename information, then let
filename
have the value specified by the header, and
jump to the step labeled
sanitize
below.
[RFC6266]
If the download was not initiated from a
hyperlink
created by an
or
area
element, or if the element of the
hyperlink
from
which it was initiated did not have a
attribute when the download was initiated, or if there was such an attribute but its value when
the download was initiated was the empty string, then jump to the step labeled
no proposed
filename
Let
proposed filename
have the value of the
attribute of the element of the
hyperlink
that initiated the download at the time the download was
initiated.
If
trusted operation
is true, let
filename
have
the value of
proposed filename
, and jump to the step labeled
sanitize
below.
If
response
has a `
Content-Disposition
` header and that header specifies
the
attachment
disposition type, let
filename
have the value of
proposed filename
, and jump to the step labeled
sanitize
below.
[RFC6266]
No proposed filename
: If
trusted operation
is true, or if the user
indicated a preference for having the response in question downloaded, let
filename
have a value derived from the
URL
of
response
in an
implementation-defined
manner, and jump to the step labeled
sanitize
below.
Let
filename
be set to the user's preferred filename or to a filename selected by
the user agent, and jump to the step labeled
sanitize
below.
If the algorithm reaches this step, then a download was begun from a different origin than
response
, and the origin did not mark the file as suitable for downloading, and the
download was not initiated by the user. This could be because a
attribute was used to trigger the download, or
because
response
is not of a type that the user agent supports.
This could be dangerous, because, for instance, a hostile server could be trying to get a
user to unknowingly download private information and then re-upload it to the hostile server,
by tricking the user into thinking the data is from the hostile server.
Thus, it is in the user's interests that the user be somehow notified that
response
comes from quite a different source, and to prevent confusion, any
suggested filename from the potentially hostile
interface origin
should be
ignored.
Sanitize
: Optionally, allow the user to influence
filename
. For
example, a user agent could prompt the user for a filename, potentially providing the value of
filename
as determined above as a default value.
Adjust
filename
to be suitable for the local file system.
For example, this could involve removing characters that are not legal in
filenames, or trimming leading and trailing whitespace.
If the platform conventions do not in any way use
extensions
to determine the types of file on the file system,
then return
filename
as the filename.
Let
claimed type
be the type given by
response
's
Content-Type metadata
, if any is known. Let
named type
be
the type given by
filename
's
extension
, if any
is known. For the purposes of this step, a
type
is a mapping of a
MIME type
to an
extension
If
named type
is consistent with the user's preferences (e.g., because the
value of
filename
was determined by prompting the user), then return
filename
as the filename.
If
claimed type
and
named type
are the same type (i.e., the type
given by
response
's
Content-Type metadata
is
consistent with the type given by
filename
's
extension
), then return
filename
as the
filename.
If the
claimed type
is known, then alter
filename
to
add an
extension
corresponding to
claimed
type
Otherwise, if
named type
is known to be potentially dangerous (e.g. it
will be treated by the platform conventions as a native executable, shell script, HTML
application, or executable-macro-capable document), then optionally alter
filename
to add a known-safe
extension
(e.g. "
.txt
").
This last step would make it impossible to download executables, which might not
be desirable. As always, implementers are forced to balance security and usability in this
matter.
Return
filename
as the filename.
For the purposes of this algorithm, a file
extension
consists of any part of the filename that platform conventions dictate will be used for
identifying the type of the file. For example, many operating systems use the part of the filename
following the last dot ("
") in the filename to determine the type of the
file, and from that the manner in which the file is to be opened or executed.
User agents should ignore any directory or path information provided by the response itself,
its
URL
, and any
attribute, in
deciding where to store the resulting file in the user's file system.
4.6.7
Hyperlink auditing
If a
hyperlink
created by an
or
area
element has a
ping
attribute, and the user follows the hyperlink, and
the value of the element's
href
attribute can be
parsed
, relative to the element's
node
document
, without failure, then the user agent must take the
ping
attribute's value,
split that string on ASCII whitespace
parse
each resulting token, relative to the element's
node document
, and
then run these steps for each resulting
URL
ping URL
, ignoring when
parsing returns failure:
If
ping URL
's
scheme
is not an
HTTP(S) scheme
, then return.
Optionally, return. (For example, the user agent might wish to ignore any or
all ping URLs in accordance with the user's expressed preferences.)
Let
settingsObject
be the element's
node document
's
relevant settings object
Let
request
be a new
request
whose
URL
is
ping URL
method
is `
POST
`,
header list
is « (`
Content-Type
`,
text/ping
`) »,
body
is `
PING
`,
client
is
settingsObject
destination
is the
empty string,
credentials mode
is "
include
",
referrer
is "
no-referrer
", and whose
use-URL-credentials flag
is set, and whose
initiator type
is "
ping
".
Let
target URL
be the result of
encoding-parsing-and-serializing a
URL
given the element's
href
attribute's value,
relative to the element's
node document
, and then:
If the
URL
of the
Document
object
containing the hyperlink being audited and
ping URL
have the
same
origin
If the origins are different, but the
scheme
of
the
URL
of the
Document
containing the
hyperlink being audited is not "
https
request
must include a `
Ping-From
` header with, as its value, the
URL
of the document containing the hyperlink, and a
Ping-To
` HTTP header with, as its value, the
target URL
Otherwise
request
must include a `
Ping-To
` HTTP header with, as its value,
target URL
request
does not include a
Ping-From
` header.
Fetch
request
This may be done
in parallel
with the primary fetch, and is independent of the
result of that fetch.
User agents should allow the user to adjust this behavior, for example in conjunction with a
setting that disables the sending of HTTP `
Referer
` (sic)
headers. Based on the user's preferences, UAs may either
ignore
the
ping
attribute altogether, or selectively ignore URLs in the
list (e.g. ignoring any third-party URLs); this is explicitly accounted for in the steps
above.
User agents must ignore any entity bodies returned in the responses. User agents may close the
connection prematurely once they start receiving a response body.
An
or
area
element that creates a
hyperlink
and has
the
ping
attribute is present, user agents may indicate
to the user that following the hyperlink will also cause secondary requests to be sent in the
background, possibly including listing the actual target URLs.
For example, a visual user agent could include the hostnames of the target ping
URLs along with the hyperlink's actual URL in a status bar or tooltip.
The
ping
attribute is redundant with pre-existing
technologies like HTTP redirects and JavaScript in allowing web pages to track which off-site
links are most popular or allowing advertisers to track click-through rates.
However, the
ping
attribute provides these advantages
to the user over those alternatives:
It allows the user to see the final target URL unobscured.
It allows the UA to inform the user about the out-of-band notifications.
It allows the UA to optimize the use of available network bandwidth so that the target page
loads faster.
4.6.7.1
The `
Ping-From
` and `
Ping-To
` headers
The `
Ping-From
` and `
Ping-To
` HTTP request headers are included in
hyperlink
auditing
requests. Their value is a
URL
serialized
4.6.8
Link types
Link_types
Support in all current engines.
Firefox
1+
Safari
1+
Chrome
1+
Opera
9+
Edge
79+
Edge (Legacy)
12+
Internet Explorer
Yes
Firefox Android
Safari iOS
Chrome Android
WebView Android
Samsung Internet
Opera Android
10.1+
Link_types
The following table summarizes the link types that are defined by this specification, by their
corresponding keywords. This table is non-normative; the actual definitions for the link types are
given in the next few sections.
In this section, the term
referenced document
refers to the resource identified by the
element representing the link, and the term
current document
refers to the resource within
which the element representing the link finds itself.
To determine which link types apply to a
link
area
or
form
element, the element's
rel
attribute must be
split on ASCII whitespace
. The resulting tokens
are the keywords for the link types that apply to that element.
Except where otherwise specified, a keyword must not be specified more than once per
rel
attribute.
Some of the sections that follow the table below list synonyms for certain keywords. The
indicated synonyms are to be handled as specified by user agents, but must
not be used in documents (for example, the keyword "
").
Keywords are always
ASCII case-insensitive
, and must be
compared as such.
Thus,
rel="next"
is the same as
rel="NEXT"
Keywords that are
body-ok
affect whether
link
elements are
allowed in the body
. The
body-ok
keywords are
dns-prefetch
modulepreload
pingback
preconnect
prefetch
preload
, and
stylesheet
New link types that are to be implemented by web browsers are to be added to this standard. The
remainder can be
registered as extensions
Link type
Effect on...
body-ok
Has `
Link
` processing
Brief description
link
and
area
form
alternate
Hyperlink
not allowed
Gives alternate representations of the current document.
canonical
Hyperlink
not allowed
Gives the preferred URL for the current document.
author
Hyperlink
not allowed
Gives a link to the author of the current document or article.
not allowed
Hyperlink
not allowed
Gives the permalink for the nearest ancestor section.
dns-prefetch
External Resource
not allowed
Yes
Specifies that the user agent should preemptively perform DNS resolution for the target resource's
origin
expect
Internal Resource
not allowed
Expect an element with the target ID to appear in the current document.
external
not allowed
Annotation
Indicates that the referenced document is not part of the same site as the current document.
help
Hyperlink
Provides a link to context-sensitive help.
icon
External Resource
not allowed
Imports an icon to represent the current document.
manifest
External Resource
not allowed
Imports or links to an
application manifest
[MANIFEST]
modulepreload
External Resource
not allowed
Yes
Specifies that the user agent must preemptively
fetch the module
script
and store it in the document's
module map
for later
evaluation. Optionally, the module's dependencies can be fetched as well.
license
Hyperlink
Indicates that the main content of the current document is covered by the copyright license described by the referenced document.
next
Hyperlink
Indicates that the current document is a part of a series, and that the next document in the series is the referenced document.
nofollow
not allowed
Annotation
Indicates that the current document's original author or publisher does not endorse the referenced document.
noopener
not allowed
Annotation
Creates a
top-level traversable
with a non-
auxiliary browsing
context
if the hyperlink would otherwise create one that was auxiliary (i.e., has an
appropriate
target
attribute value).
noreferrer
not allowed
Annotation
No `
Referer
` (sic) header will be included.
Additionally, has the same effect as
noopener
opener
not allowed
Annotation
Creates an
auxiliary browsing context
if the hyperlink would otherwise create
top-level traversable
with a non-
auxiliary browsing context
(i.e.,
has "
_blank
" as
target
attribute value).
pingback
External Resource
not allowed
Yes
Gives the address of the pingback server that handles pingbacks to the current document.
preconnect
External Resource
not allowed
Yes
Yes
Specifies that the user agent should preemptively connect to the target resource's
origin
prefetch
External Resource
not allowed
Yes
Specifies that the user agent should preemptively
fetch
and cache the target resource as it is likely to be required for a followup
preload
External Resource
not allowed
Yes
Yes
Specifies that the user agent must preemptively
fetch
and cache the target resource for current
according to the
preload destination
given by the
as
attribute (and the
priority
associated with the
corresponding
destination
).
prev
Hyperlink
Indicates that the current document is a part of a series, and that the previous document in the series is the referenced document.
privacy-policy
Hyperlink
not allowed
Gives a link to information about the data collection and usage practices that apply to the current document.
Hyperlink
Gives a link to a resource that can be used to search through the current document and its related pages.
stylesheet
External Resource
not allowed
Yes
Imports a style sheet.
tag
not allowed
Hyperlink
not allowed
Gives a tag (identified by the given address) that applies to the current document.
terms-of-service
Hyperlink
not allowed
Gives a link to information about the agreements between the current document's provider and users who wish to use the current document.
4.6.8.1
Link type "
alternate
Alternative_style_sheets
Support in one engine only.
Firefox
3+
Safari
Chrome
1–48
Opera
Yes
Edge
No
Edge (Legacy)
Internet Explorer
8+
Firefox Android
Safari iOS
Chrome Android
WebView Android
Samsung Internet
Opera Android
The
alternate
keyword may be used with
link
, and
area
elements.
The meaning of this keyword depends on the values of the other attributes.
If the element is a
link
element and the
rel
attribute also contains the keyword
stylesheet
The
alternate
keyword modifies the meaning of the
stylesheet
keyword in the way described for that keyword. The
alternate
keyword does not create a link of its own.
Here, a set of
link
elements provide some style sheets:
link
rel
"stylesheet"
href
"default.css"
link
rel
"stylesheet"
href
"green.css"
title
"Green styles"
link
rel
"alternate stylesheet"
href
"contrast.css"
title
"High contrast"
link
rel
"alternate stylesheet"
href
"big.css"
title
"Big fonts"
link
rel
"alternate stylesheet"
href
"wide.css"
title
"Wide screen"
If the
alternate
keyword is used with the
type
attribute set to the value
application/rss+xml
or the value
application/atom+xml
The keyword creates a
hyperlink
referencing a syndication feed (though not
necessarily syndicating exactly the same content as the current page).
For the purposes of feed autodiscovery, user agents should consider all
link
elements in the document with the
alternate
keyword used and
with their
type
attribute set to the value
application/rss+xml
or the value
application/atom+xml
. If the user agent has the concept of a default
syndication feed, the first such element (in
tree order
) should be used as the
default.
The following
link
elements give syndication feeds for a blog:
link
rel
"alternate"
type
"application/atom+xml"
href
"posts.xml"
title
"Cool Stuff Blog"
link
rel
"alternate"
type
"application/atom+xml"
href
"posts.xml?category=robots"
title
"Cool Stuff Blog: robots category"
link
rel
"alternate"
type
"application/atom+xml"
href
"comments.xml"
title
"Cool Stuff Blog: Comments"
Such
link
elements would be used by user agents engaged in feed autodiscovery,
with the first being the default (where applicable).
The following example offers various different syndication feeds to the user, using
elements:
You can access the planets database using Atom feeds:
ul
li
><
href
"recently-visited-planets.xml"
rel
"alternate"
type
"application/atom+xml"
Recently Visited Planets
>
li
li
><
href
"known-bad-planets.xml"
rel
"alternate"
type
"application/atom+xml"
Known Bad Planets
>
li
li
><
href
"unexplored-planets.xml"
rel
"alternate"
type
"application/atom+xml"
Unexplored Planets
>
li
ul
These links would not be used in feed autodiscovery.
Otherwise
The keyword creates a
hyperlink
referencing an alternate representation of the
current document.
The nature of the referenced document is given by the
hreflang
, and
type
attributes.
If the
alternate
keyword is used with the
hreflang
attribute, and that attribute's value differs
from the
document element
's
language
, it indicates that the referenced
document is a translation.
If the
alternate
keyword is used with the
type
attribute, it indicates that the referenced document is
a reformulation of the current document in the specified format.
The
hreflang
and
type
attributes can be combined when specified with the
alternate
keyword.
The following example shows how you can specify versions of the page that use alternative
formats, are aimed at other languages, and that are intended for other media:
link
rel
alternate
href
"/en/html"
hreflang
en
type
text/html
title
"English HTML"
link
rel
alternate
href
"/fr/html"
hreflang
fr
type
text/html
title
"French HTML"
link
rel
alternate
href
"/en/html/print"
hreflang
en
type
text/html
media
title
"English HTML (for printing)"
link
rel
alternate
href
"/fr/html/print"
hreflang
fr
type
text/html
media
title
"French HTML (for printing)"
link
rel
alternate
href
"/en/pdf"
hreflang
en
type
application/pdf
title
"English PDF"
link
rel
alternate
href
"/fr/pdf"
hreflang
fr
type
application/pdf
title
"French PDF"
This relationship is transitive — that is, if a document links to two other documents
with the link type "
alternate
", then, in addition to implying
that those documents are alternative representations of the first document, it is also implying
that those two documents are alternative representations of each other.
4.6.8.2
Link type "
author
The
author
keyword may be used with
link
, and
area
elements. This keyword creates a
hyperlink
For
and
area
elements, the
author
keyword indicates that the referenced document provides further information about the author of
the nearest
article
element ancestor of the element defining the hyperlink, if there
is one, or of the page as a whole, otherwise.
For
link
elements, the
author
keyword indicates
that the referenced document provides further information about the author for the page as a
whole.
The "referenced document" can be, and often is, a
mailto:
URL giving the email address of the author.
[MAILTO]
Synonyms
: For historical reasons, user agents must also treat
link
, and
area
elements that have a
rev
attribute with the value "
made
" as having the
author
keyword specified as a link relationship.
4.6.8.3
Link type "
The
keyword may be used with
and
area
elements. This keyword creates a
hyperlink
The
keyword gives a permalink for the nearest
ancestor
article
element of the linking element in question, or of
the section the linking element is most closely associated with, if
there are no ancestor
article
elements.
The following snippet has three permalinks. A user agent could determine which permalink
applies to which part of the spec by looking at where the permalinks are given.
...
body
h1
Example of permalinks
h1
div
id
"a"
h2
First example
h2
><
href
"a.html"
rel
"bookmark"
This permalink applies to
only the content from the first H2 to the second H2
. The DIV isn't
exactly that section, but it roughly corresponds to it.
div
h2
Second example
h2
article
id
"b"
><
href
"b.html"
rel
"bookmark"
This permalink applies to
the outer ARTICLE element
(which could be, e.g., a blog post).
article
id
"c"
><
href
"c.html"
rel
"bookmark"
This permalink applies to
the inner ARTICLE element
(which could be, e.g., a blog comment).
article
article
body
...
4.6.8.4
Link type "
canonical
The
canonical
keyword may be used with
link
element. This keyword creates a
hyperlink
The
canonical
keyword indicates that URL given by the
href
attribute is the preferred URL for the current document. That
helps search engines reduce duplicate content, as described in more detail in
The Canonical
Link Relation
[RFC6596]
4.6.8.5
Link type "
dns-prefetch
Link_types/dns-prefetch
Firefox
3+
Safari
Chrome
46+
Opera
Edge
79+
Edge (Legacy)
No
Internet Explorer
Firefox Android
Safari iOS
Chrome Android
Yes
WebView Android
46+
Samsung Internet
Opera Android
The
dns-prefetch
keyword may be used with
link
elements. This keyword creates an
external
resource link
. This keyword is
body-ok
The
dns-prefetch
keyword indicates that preemptively
performing DNS resolution for the
origin
of the specified resource is likely to be
beneficial, as it is highly likely that the user will require resources located at that
origin
, and the user experience would be improved by preempting the latency costs
associated with DNS resolution.
There is no default type for resources given by the
dns-prefetch
keyword.
The appropriate times to
fetch and
process
this type of link are:
When the
external resource link
is created on a
link
element
that is already
browsing-context connected
When the
external resource link
's
link
element
becomes
browsing-context connected
When the
href
attribute of the
link
element of an
external resource link
that is already
browsing-context
connected
is changed.
The
fetch and process the linked resource
steps for this type of linked resource,
given a
link
element
el
, are:
Let
url
be the result of
encoding-parsing a URL
given
el
's
href
attribute's value, relative to
el
's
node document
If
url
is failure, then return.
Let
partitionKey
be the result of
determining the network partition key
given
el
's
node document
's
relevant settings object
The user agent should
resolve an origin
given
partitionKey
and
url
's
origin
As the results of this algorithm can be cached, future fetches could be
faster.
4.6.8.6
Link type "
expect
The
expect
keyword may be used with
link
elements. This keyword creates an
internal resource
link
An
internal resource link
created by the
expect
keyword can be used to
block rendering
until the element that
it
indicates
is connected to the document and fully
parsed.
There is no default type for resources given by the
expect
keyword.
Whenever any of the following conditions occur for a
link
element
el
the
expect
internal resource link
is created
on
el
that is already
browsing-context connected
an
expect
internal resource link
has been
created on
el
and
el
becomes
browsing-context connected
an
expect
internal resource link
has been
created on
el
el
is already
browsing-context connected
, and
el
's
href
attribute is set, changed, or removed;
or
an
expect
internal resource link
has been
created on
el
el
is already
browsing-context connected
, and
el
's
media
attribute is set, changed, or
removed,
then
process
el
To
process internal resource link
given a
link
element
el
run these steps:
Let
doc
be
el
's
node document
Let
url
be the result of
encoding-parsing a URL
given
el
's
href
attribute's value, relative to
doc
If this fails, or if
url
does not
equal
doc
's
URL
with
exclude fragments
set to false, then
unblock rendering
on
el
and return.
Let
indicatedElement
be the result of
selecting the indicated part
given
doc
and
url
If all of the following are true:
doc
's
current document readiness
is "
loading
";
el
creates an
internal resource link
el
is
browsing-context connected
el
's
rel
attribute
contains
expect
el
is
potentially render-blocking
el
's
media
attribute
matches the environment
; and
indicatedElement
is not an element, or is on a
stack of open elements
of an
HTML parser
whose associated
Document
is
doc
then
block rendering
on
el
Otherwise,
unblock rendering
on
el
To
process internal resource links
given a
Document
doc
For each
expect
link
element
link
in
doc
's
render-blocking element set
process
link
The following
attribute change
steps
, given
element
localName
oldValue
value
, and
namespace
, are used to ensure
expect
link
elements respond to dynamic
id
and
name
changes:
If
namespace
is not null, then return.
If
element
is in a
stack of open elements
of an
HTML parser
, then return.
If any of the following is true:
localName
is
id
; or
localName
is
name
and
element
is an
element,
then
process internal resource links
given
element
's
node document
4.6.8.7
Link type "
external
The
external
keyword may be used with
area
, and
form
elements. This keyword does not create a
hyperlink
, but
annotates
any other
hyperlinks created by the element (the implied hyperlink, if no other keywords create one).
The
external
keyword indicates that the link is leading to a
document that is not part of the site that the current document forms a part of.
4.6.8.8
Link type "
help
The
help
keyword may be used with
link
area
, and
form
elements. This keyword creates a
hyperlink
For
area
, and
form
elements, the
help
keyword indicates that the referenced document provides further help
information for the parent of the element defining the hyperlink, and its children.
In the following example, the form control has associated context-sensitive help. The user
agent could use this information, for example, displaying the referenced document if the user
presses the "Help" or "F1" key.
><
label
Topic:
input
name
topic
href
"help/topic.html"
rel
"help"
(Help)
>
label
>
For
link
elements, the
help
keyword indicates that
the referenced document provides help for the page as a whole.
For
and
area
elements, on some browsers, the
help
keyword causes the link to use a different cursor.
4.6.8.9
Link type "
icon
Link_types#icon
Support in all current engines.
Firefox
2+
Safari
3.1+
Chrome
4+
Opera
9+
Edge
79+
Edge (Legacy)
12+
Internet Explorer
11
Firefox Android
4+
Safari iOS
No
Chrome Android
18+
WebView Android
38+
Samsung Internet
4.0+
Opera Android
No
caniuse.com table
The
icon
keyword may be used with
link
elements.
This keyword creates an
external resource link
The specified resource is an icon representing the page or site, and should be used by the user
agent when representing the page in the user interface.
Icons could be auditory icons, visual icons, or other kinds of icons. If
multiple icons are provided, the user agent must select the most appropriate icon according to the
type
media
, and
sizes
attributes. If there are multiple equally appropriate icons,
user agents must use the last one declared in
tree order
at the time that the user
agent collected the list of icons. If the user agent tries to use an icon but that icon is
determined, upon closer examination, to in fact be inappropriate (e.g. because it uses an
unsupported format), then the user agent must try the next-most-appropriate icon as determined by
the attributes.
User agents are not required to update icons when the list of icons changes, but
are encouraged to do so.
There is no default type for resources given by the
icon
keyword.
However, for the purposes of
determining the type of the
resource
, user agents must expect the resource to be an image.
The
sizes
keywords represent icon sizes in raw pixels (as
opposed to
CSS pixels
).
An icon that is 50
CSS pixels
wide intended for
displays with a device pixel density of two device pixels per
CSS pixel
(2x, 192dpi) would have a width of 100 raw pixels. This feature does not support indicating that a
different resource is to be used for small high-resolution icons vs large low-resolution icons
(e.g. 50×50 2x vs 100×100 1x).
To parse and process the attribute's value, the user agent must first
split the attribute's value on ASCII whitespace
, and must then
parse each resulting keyword to determine what it represents.
The
any
keyword represents that the
resource contains a scalable icon, e.g. as provided by an SVG image.
Other keywords must be further parsed as follows to determine what they represent:
If the keyword doesn't contain exactly one U+0078 LATIN SMALL LETTER X or U+0058 LATIN
CAPITAL LETTER X character, then this keyword doesn't represent anything. Return for
that keyword.
Let
width string
be the string before the "
" or
".
Let
height string
be the string after the "
" or
".
If either
width string
or
height string
start with
a U+0030 DIGIT ZERO (0) character or contain any characters other than
ASCII digits
then this keyword doesn't represent anything. Return for that keyword.
Apply the
rules for parsing non-negative integers
to
width
string
to obtain
width
Apply the
rules for parsing non-negative integers
to
height
string
to obtain
height
The keyword represents that the resource contains a bitmap icon with a width of
width
device pixels and a height of
height
device
pixels.
The keywords specified on the
sizes
attribute must not
represent icon sizes that are not actually available in the linked resource.
The
linked resource fetch setup steps
for this type of linked resource, given a
link
element
el
and
request
request
, are:
Set
request
's
destination
to
image
".
Return true.
The
process a link header
steps for this type of linked resource are to do
nothing.
In the absence of a
link
with the
icon
keyword, for
Document
objects whose
URL
's
scheme
is an
HTTP(S) scheme
, user agents may
instead run these steps
in parallel
Let
request
be a new
request
whose
URL
is the
URL record
obtained by
resolving the
URL
/favicon.ico
" against the
Document
object's
URL
client
is the
Document
object's
relevant settings object
destination
is "
image
",
synchronous flag
is set,
credentials
mode
is "
include
", and whose
use-URL-credentials flag
is set.
Let
response
be the result of
fetching
request
Use
response
's
unsafe response
as an icon as if it had been
declared using the
icon
keyword.
The following snippet shows the top part of an application with several icons.
html
lang
"en"
head
title
lsForums — Inbox
title
link
rel
icon
href
favicon.png
sizes
"16x16"
type
"image/png"
link
rel
icon
href
windows.ico
sizes
"32x32 48x48"
type
"image/vnd.microsoft.icon"
link
rel
icon
href
mac.icns
sizes
"128x128 512x512 8192x8192 32768x32768"
link
rel
icon
href
iphone.png
sizes
"57x57"
type
"image/png"
link
rel
icon
href
gnome.svg
sizes
"any"
type
"image/svg+xml"
link
rel
stylesheet
href
lsforums.css
script
src
lsforums.js
>
script
meta
name
application-name
content
"lsForums"
head
body
...
For historical reasons, the
icon
keyword may be preceded by the
keyword "
shortcut
". If the "
shortcut
" keyword is
present, the
rel
attribute's entire value must be an
ASCII case-insensitive
match for the string "
shortcut icon
" (with a single U+0020 SPACE character between the tokens and
no other
ASCII whitespace
).
4.6.8.10
Link type "
license
The
license
keyword may be used with
link
area
, and
form
elements. This keyword creates a
hyperlink
The
license
keyword indicates that the referenced document
provides the copyright license terms under which the main content of the current document is
provided.
This specification does not specify how to distinguish between the main content of a document
and content that is not deemed to be part of that main content. The distinction should be made
clear to the user.
Consider a photo sharing site. A page on that site might describe and show a photograph, and
the page might be marked up as follows:
html
lang
"en"
head
title
Exampl Pictures: Kissat
title
link
rel
"stylesheet"
href
"/style/default"
head
body
h1
Kissat
h1
nav
href
"../"
Return to photo index
nav
figure
img
src
"/pix/39627052_fd8dcd98b5.jpg"
figcaption
Kissat
figcaption
figure
One of them has six toes!
><
small
><
rel
"license"
href
"http://www.opensource.org/licenses/mit-license.php"
MIT Licensed
>
small
>
footer
href
"/"
href
"../"
Photo index
><
small
© copyright 2009 Exampl Pictures. All Rights Reserved.
small
>
footer
body
html
In this case the
license
applies to just the photo (the main
content of the document), not the whole document. In particular not the design of the page
itself, which is covered by the copyright given at the bottom of the document. This could be made
clearer in the styling (e.g. making the license link prominently positioned near the photograph,
while having the page copyright in light small text at the foot of the page).
Synonyms
: For historical reasons, user agents must also treat the keyword
" like the
license
keyword.
4.6.8.11
Link type "
manifest
Link_types/manifest
Support in one engine only.
Firefox
Safari
Chrome
No
Opera
Edge
No
Edge (Legacy)
Internet Explorer
Firefox Android
Safari iOS
Chrome Android
39+
WebView Android
Samsung Internet
Opera Android
The
manifest
keyword may be used with
link
elements.
This keyword creates an
external resource link
The
manifest
keyword indicates the manifest file that provides
metadata associated with the current document.
There is no default type for resources given by the
manifest
keyword.
When a web application is not
installed
, the
appropriate time to
fetch and process the linked resource
for this link type is when
the user agent deems it necessary. For example, when the user chooses to
install the web application
For an
installed web application
, the
appropriate times to
fetch and process the linked resource
for this link type
are:
When the
external resource link
is created on a
link
element
that is already
browsing-context connected
When the
external resource link
's
link
element
becomes
browsing-context connected
When the
href
attribute of the
link
element of an
external resource link
that is already
browsing-context
connected
is changed.
In any case, only the first
link
element in
tree order
whose
rel
attribute contains the token
manifest
may be used.
A user agent must not
delay the load event
for this link type.
The
linked resource fetch setup steps
for this type of linked resource, given a
link
element
el
and
request
request
, are:
Let
navigable
be
el
's
node document
's
node
navigable
If
navigable
is null, then return false.
If
navigable
is not a
top-level traversable
, then return
false.
Set
request
's
initiator
to
manifest
".
Set
request
's
destination
to
manifest
".
Set
request
's
mode
to "
cors
".
Set
request
's
credentials
mode
to the
CORS settings attribute credentials mode
for
el
's
crossorigin
content attribute.
Return true.
To
process this type of linked resource
given
link
element
el
, boolean
success
response
response
, and
byte sequence
bodyBytes
If
response
's
Content-Type metadata
is not a
JSON MIME type
, then set
success
to false.
If
success
is true:
Let
document URL
be
el
's
node document
's
URL
Let
manifest URL
be
response
's
URL
Process the manifest
given
document URL
manifest
URL
, and
bodyBytes
[MANIFEST]
The
process a link header
steps for this type of linked resource are to do
nothing.
4.6.8.12
Link type "
modulepreload
Link_types/modulepreload
Firefox
115+
Safari
Chrome
66+
Opera
Edge
79+
Edge (Legacy)
No
Internet Explorer
Firefox Android
Safari iOS
Chrome Android
WebView Android
Samsung Internet
Opera Android
The
modulepreload
keyword may be used with
link
elements. This keyword creates an
external resource link
. This
keyword is
body-ok
The
modulepreload
keyword is a specialized alternative
to the
preload
keyword, with a processing model geared toward
preloading
module scripts
. In particular, it uses the specific
fetch behavior for module scripts (including, e.g., a different interpretation of the
crossorigin
attribute), and places the result into the
appropriate
module map
for later evaluation. In
contrast, a similar
external resource link
using the
preload
keyword would place the result in the preload cache, without
affecting the document's
module map
Additionally, implementations can take advantage of the fact that
module scripts
declare their dependencies in order to fetch the specified module's
dependency as well. This is intended as an optimization opportunity, since the user agent knows
that, in all likelihood, those dependencies will also be needed later. It will not generally be
observable without using technology such as service workers, or monitoring on the server side.
Notably, the appropriate
load
or
error
events will occur after the specified module is fetched, and
will not wait for any dependencies.
A user agent must not
delay the load event
for this link type.
module preload destination
is "
json
", "
style
", "
text
", or a
script-like destination
The appropriate times to
fetch and process the linked resource
for such a link
are:
When the
external resource link
is created on a
link
element
that is already
browsing-context connected
When the
external resource link
's
link
element
becomes
browsing-context connected
When the
href
attribute of the
link
element of an
external resource link
that is already
browsing-context
connected
is changed.
Unlike some other link relations, changing the relevant attributes (such as
as
crossorigin
, and
referrerpolicy
) of such a
link
does not trigger a new fetch. This is because the document's
module map
has already been populated by a previous
fetch, and so re-fetching would be pointless.
The
fetch and process the linked resource
algorithm for
modulepreload
links, given a
link
element
el
, is as follows:
If
el
's
href
attribute's value is the
empty string, then return.
Let
destination
be the current state of
el
's
as
attribute (a
destination
), or "
script
" if
it is in no state.
If
destination
is not a
module preload destination
, then
queue an element task
on the
networking task source
given
el
to
fire an event
named
error
at
el
, and return.
Let
url
be the result of
encoding-parsing a URL
given
el
's
href
attribute's value, relative to
el
's
node document
If
url
is failure, then return.
Let
settings object
be
el
's
node document
's
relevant settings object
Let
credentials mode
be the
CORS settings attribute credentials
mode
for
el
's
crossorigin
attribute.
Let
cryptographic nonce
be
el
[[CryptographicNonce]]
Let
integrity metadata
be the value of
el
's
integrity
attribute, if it is specified, or the empty string
otherwise.
If
el
does not have an
integrity
attribute, then set
integrity metadata
to the result of
resolving a module
integrity metadata
with
url
and
settings object
Let
referrer policy
be the current state of
el
's
referrerpolicy
attribute.
Let
fetch priority
be the current state of
el
's
fetchpriority
attribute.
Let
options
be a
script fetch options
whose
cryptographic nonce
is
cryptographic
nonce
integrity metadata
is
integrity metadata
parser
metadata
is "
not-parser-inserted
",
credentials mode
is
credentials
mode
referrer
policy
is
referrer policy
, and
fetch priority
is
fetch priority
Fetch a modulepreload module script graph
given
url
destination
settings object
options
, and with the following
steps given
result
If
result
is null, then
fire an
event
named
error
at
el
and return.
Fire an event
named
load
at
el
The
process a link header
steps for this type of linked resource are to do
nothing.
The following snippet shows the top part of an application with several modules preloaded:
html
lang
"en"
title
IRCFog
title
link
rel
"modulepreload"
href
"app.mjs"
link
rel
"modulepreload"
href
"helpers.mjs"
link
rel
"modulepreload"
href
"irc.mjs"
link
rel
"modulepreload"
href
"fog-machine.mjs"
script
type
"module"
src
"app.mjs"
...
Assume that the module graph for the application is as follows:
Here we see the application developer has used
modulepreload
to declare all of the modules in their module graph,
ensuring that the user agent initiates fetches for them all. Without such preloading, the user
agent might need to go through multiple network roundtrips before discovering
helpers.mjs
, if technologies such as HTTP/2 Server Push are not in play. In
this way,
modulepreload
link
elements can be
used as a sort of "manifest" of the application's modules.
The following code shows how
modulepreload
links can
be used in conjunction with
import()
to ensure network fetching is done ahead of
time, so that when
import()
is called, the module is already ready (but not
evaluated) in the
module map
link
rel
"modulepreload"
href
"awesome-viewer.mjs"
button
onclick
"import('./awesome-viewer.mjs').then(m => m.view())"
View awesome thing
button
4.6.8.13
Link type "
nofollow
The
nofollow
keyword may be used with
area
, and
form
elements. This keyword does not create a
hyperlink
, but
annotates
any other
hyperlinks created by the element (the implied hyperlink, if no other keywords create one).
The
nofollow
keyword indicates that the link is not endorsed
by the original author or publisher of the page, or that the link to the referenced document was
included primarily because of a commercial relationship between people affiliated with the two
pages.
4.6.8.14
Link type "
noopener
Link_types/noopener
Support in all current engines.
Firefox
52+
Safari
10.1+
Chrome
49+
Opera
Edge
79+
Edge (Legacy)
Internet Explorer
No
Firefox Android
Safari iOS
Chrome Android
WebView Android
Samsung Internet
Opera Android
Link_types/noopener
Support in all current engines.
Firefox
52+
Safari
10.1+
Chrome
49+
Opera
Edge
79+
Edge (Legacy)
Internet Explorer
No
Firefox Android
Safari iOS
Chrome Android
WebView Android
Samsung Internet
Opera Android
The
noopener
keyword may be used with
area
, and
form
elements. This keyword does not create a
hyperlink
, but
annotates
any other
hyperlinks created by the element (the implied hyperlink, if no other keywords create one).
The keyword indicates that any newly created
top-level traversable
which results
from following the
hyperlink
will not contain an
auxiliary browsing
context
. E.g., the resulting
Window
's
opener
getter will return null.
See also the
processing model
This typically creates a
top-level traversable
with an
auxiliary browsing
context
(assuming there is no existing
navigable
whose
target name
is "
example
"):
href
help.html
target
example
Help!
This creates a
top-level traversable
with a non-
auxiliary browsing
context
(assuming the same thing):
href
help.html
target
example
rel
noopener
Help!
These are equivalent and only navigate the
parent
navigable
href
index.html
target
_parent
href
index.html
target
_parent
rel
noopener
4.6.8.15
Link type "
noreferrer
Link_types/noreferrer
Support in all current engines.
Firefox
33+
Safari
5+
Chrome
16+
Opera
Edge
79+
Edge (Legacy)
13+
Internet Explorer
🔰 11
Firefox Android
Safari iOS
Chrome Android
WebView Android
Samsung Internet
1.5+
Opera Android
Link_types/noreferrer
Support in all current engines.
Firefox
33+
Safari
5+
Chrome
16+
Opera
Edge
79+
Edge (Legacy)
13+
Internet Explorer
🔰 11
Firefox Android
Safari iOS
Chrome Android
WebView Android
Samsung Internet
1.5+
Opera Android
The
noreferrer
keyword may be used with
area
, and
form
elements. This keyword does not create a
hyperlink
, but
annotates
any other
hyperlinks created by the element (the implied hyperlink, if no other keywords create one).
It indicates that no referrer information is to be leaked when following the link and also
implies the
noopener
keyword behavior under the same
conditions.
See also the
processing
model
where referrer is directly manipulated.
has the same behavior as
4.6.8.16
Link type "
opener
The
opener
keyword may be used with
area
, and
form
elements. This keyword does not create a
hyperlink
, but
annotates
any other
hyperlinks created by the element (the implied hyperlink, if no other keywords create one).
The keyword indicates that any newly created
top-level traversable
which results
from following the
hyperlink
will contain an
auxiliary browsing
context
See also the
processing model
In the following example the
opener
is used to allow the help
page popup to navigate its opener, e.g., in case what the user is looking for can be found
elsewhere. An alternative might be to use a named target, rather than
_blank
, but this has the potential to clash with existing names.
href
"..."
rel
opener
target
_blank
Help!
4.6.8.17
Link type "
pingback
The
pingback
keyword may be used with
link
elements. This keyword creates an
external resource
link
. This keyword is
body-ok
For the semantics of the
pingback
keyword, see
Pingback 1.0
[PINGBACK]
4.6.8.18
Link type "
preconnect
Link_types/preconnect
Support in all current engines.
Firefox
39+
Safari
11.1+
Chrome
46+
Opera
Edge
79+
Edge (Legacy)
Internet Explorer
No
Firefox Android
Safari iOS
Chrome Android
WebView Android
Samsung Internet
4.0+
Opera Android
The
preconnect
keyword may be used with
link
elements. This keyword creates an
external resource
link
. This keyword is
body-ok
The
preconnect
keyword indicates that preemptively
initiating a connection to the
origin
of the specified resource is likely to be
beneficial, as it is highly likely that the user will require resources located at that
origin
, and the user experience would be improved by preempting the latency costs
associated with establishing the connection.
There is no default type for resources given by the
preconnect
keyword.
A user agent must not
delay the load event
for this link type.
The appropriate times to
fetch and
process
this type of link are:
When the
external resource link
is created on a
link
element
that is already
browsing-context connected
When the
external resource link
's
link
element
becomes
browsing-context connected
When the
href
attribute of the
link
element of an
external resource link
that is already
browsing-context
connected
is changed.
When the
crossorigin
attribute of the
link
element of an
external resource
link
that is already
browsing-context connected
is set, changed, or
removed.
The
fetch and process the linked resource
steps for this type of linked resource,
given a
link
element
el
, are to
create link options
from
el
and
to
preconnect
given the result.
The
process a link header
step for this type of linked resource given a
link processing options
options
are to
preconnect
given
options
To
preconnect
given a
link processing options
options
If
options
's
href
is an empty string, return.
Let
url
be the result of
encoding-parsing a URL
given
options
's
href
, relative to
options
's
base URL
Passing the base URL instead of a document or environment is tracked by
issue #9715
If
url
is failure, then return.
If
url
's
scheme
is not an
HTTP(S) scheme
, then return.
Let
partitionKey
be the result of
determining the network partition key
given
options
's
environment
Let
useCredentials
be true.
If
options
's
crossorigin
is
Anonymous
and
options
's
origin
does not
have the
same origin
as
url
's
origin
, then set
useCredentials
to
false.
The user agent should
obtain a connection
given
partitionKey
url
's
origin
, and
useCredentials
This connection is obtained but not used directly. It will remain in the
connection pool
for subsequent use.
The user agent should attempt to initiate a preconnect and perform the full connection
handshake (DNS+TCP for HTTP, and DNS+TCP+TLS for HTTPS origins) whenever possible, but is
allowed to elect to perform a partial handshake (DNS only for HTTP, and DNS or DNS+TCP for
HTTPS origins), or skip it entirely, due to resource constraints or other reasons.
The optimal number of connections per origin is dependent on the negotiated protocol, users
current connectivity profile, available device resources, global connection limits, and other
context specific variables. As a result, the decision for how many connections should be opened
is deferred to the user agent.
4.6.8.19
Link type "
prefetch
Link_types/prefetch
Firefox
2+
Safari
No
Chrome
8+
Opera
Edge
79+
Edge (Legacy)
12+
Internet Explorer
11
Firefox Android
Safari iOS
Chrome Android
WebView Android
Samsung Internet
1.5+
Opera Android
The
prefetch
keyword may be used with
link
elements. This keyword creates an
external resource
link
. This keyword is
body-ok
The
prefetch
keyword indicates that preemptively
fetching
and caching the specified resource or same-site document is
likely to be beneficial, as it is highly likely that the user will require this resource for
future navigations.
There is no default type for resources given by the
prefetch
keyword.
The appropriate times to
fetch and
process
this type of link are:
When the
external resource link
is created on a
link
element
that is already
browsing-context connected
When the
external resource link
's
link
element
becomes
browsing-context connected
When the
href
attribute of the
link
element of an
external resource link
that is already
browsing-context
connected
is changed.
When the
crossorigin
attribute of the
link
element of an
external resource
link
that is already
browsing-context connected
is set, changed, or
removed.
The
fetch and process the linked resource
algorithm for
prefetch
links, given a
link
element
el
, is as follows:
If
el
's
href
attribute's value is the
empty string, then return.
Let
options
be the result of
creating link options
from
el
Let
request
be the result of
creating a
link request
given
options
If
request
is null, then return.
Set
request
's
initiator
to
prefetch
".
Let
processPrefetchResponse
be the following steps given a
response
response
and null, failure, or a
byte sequence
bytesOrNull
If
response
is a
network error
fire an event
named
error
at
el
Otherwise,
fire an event
named
load
at
el
The user agent should
fetch
request
, with
processResponseConsumeBody
set to
processPrefetchResponse
. User agents may delay the fetching of
request
to
prioritize other requests that are necessary for the current document.
The
process a link header
steps for this type of linked resource are to do
nothing.
4.6.8.20
Link type "
preload
Link_types/preload
Support in one engine only.
Firefox
85+
Safari
Chrome
🔰 50+
Opera
37+
Edge
🔰 79+
Edge (Legacy)
No
Internet Explorer
Firefox Android
Safari iOS
Chrome Android
WebView Android
50+
Samsung Internet
5.0+
Opera Android
The
preload
keyword may be used with
link
elements. This keyword creates an
external resource
link
. This keyword is
body-ok
The
preload
keyword indicates that the user agent will
preemptively
fetch
and cache the specified resource according
to the
preload destination
given by the
as
attribute, and the
priority
given by the
fetchpriority
attribute, as it is highly likely that the
user will require this resource for the current navigation.
User-agents might perform additional operations when a resource is loaded, such as
preemptively
decoding images
or
creating style sheets
. However, these additional
operations cannot have observable effects.
There is no default type for resources given by the
preload
keyword.
A user agent must not
delay the load event
for this link type.
The appropriate times to
fetch and process the linked resource
for such a link
are:
When the
external resource link
is created on a
link
element
that is already
browsing-context connected
When the
external resource link
's
link
element
becomes
browsing-context connected
When the
href
attribute of the
link
element of an
external resource link
that is already
browsing-context
connected
is changed.
When the
as
attribute of the
link
element of an
external resource link
that is already
browsing-context
connected
is changed.
When the
type
attribute of the
link
element of an
external resource link
that is already
browsing-context
connected
, but was previously not obtained due to the
type
attribute specifying an unsupported type for the request
destination
, is set, removed, or
changed.
When the
media
attribute of the
link
element of an
external resource link
that is already
browsing-context
connected
, but was previously not obtained due to the
media
attribute not
matching the environment
, is changed or
removed.
Document
has a
map of preloaded resources
, which is an
ordered map
, initially empty.
preload key
is a
struct
. It has the following
items
URL
URL
destination
preload destination
mode
request mode
, either
same-origin
", "
cors
", or
no-cors
credentials mode
credentials mode
preload entry
is a
struct
. It has the following
items
integrity metadata
A string
response
Null or a
response
on response available
Null, or an algorithm accepting a
response
or null
To
consume a preloaded resource
for
Window
window
given a
URL
url
, a string
destination
, a string
mode
, a string
credentialsMode
, a string
integrityMetadata
, and
onResponseAvailable
, which is an algorithm accepting a
response
Let
key
be a
preload key
whose
URL
is
url
destination
is
destination
mode
is
mode
, and
credentials mode
is
credentialsMode
Let
preloads
be
window
's
associated
Document
's
map of
preloaded resources
If
key
does not
exist
in
preloads
then return false.
Let
entry
be
preloads
key
].
Let
consumerIntegrityMetadata
be the result of
parsing
integrityMetadata
Let
preloadIntegrityMetadata
be the result of
parsing
entry
's
integrity metadata
If none of the following conditions apply:
consumerIntegrityMetadata
is
no metadata
consumerIntegrityMetadata
is equal to
preloadIntegrityMetadata
or
This comparison would ignore unknown integrity options. See
issue #116.
then return false.
A mismatch in integrity metadata between the preload and the consumer, even if
both match the data, would lead to an additional fetch from the network.
It is important that
network errors
are
added to the preload cache so that if a preload request results in an error, the erroneous
response isn't re-requested from the network later. This also has security implications;
consider the case where a developer specifies subresource integrity metadata on a preload
request, but not the following resource request. If the preload request fails subresource
integrity verification and is discarded, the resource request will fetch and consume a
potentially-malicious response from the network without verifying its integrity.
[SRI]
Remove
preloads
key
].
If
entry
's
response
is null, then set
entry
's
on response available
to
onResponseAvailable
Otherwise, call
onResponseAvailable
with
entry
's
response
Return true.
For the purposes of this section, a string
type
matches
preload destination
destination
if the following algorithm returns true:
If
type
is an empty string, then return true.
If
destination
is "
fetch
", then return true.
Let
mimeTypeRecord
be the result of
parsing
type
If
mimeTypeRecord
is failure, then return false.
If
mimeTypeRecord
is not
supported by the user agent
, then
return false.
If any of the following are true:
destination
is "
script
" and
mimeTypeRecord
is a
JavaScript MIME type
destination
is "
image
" and
mimeTypeRecord
is an
image MIME type
destination
is "
font
" and
mimeTypeRecord
is a
font MIME type
destination
is "
style
" and
mimeTypeRecord
's
essence
is
text/css
; or
destination
is "
track
" and
mimeTypeRecord
's
essence
is
text/vtt
then return true.
Return false.
To
create a preload key
for a
request
request
, return a new
preload key
whose
URL
is
request
's
URL
destination
is
request
's
destination
mode
is
request
's
mode
, and
credentials mode
is
request
's
credentials mode
preload destination
is "
fetch
", "
font
", "
image
", "
script
", "
style
", or "
track
".
To
translate a preload destination
given a string
destination
If
destination
is not a
preload destination
, then return
null.
Return the result of
translating
destination
To
preload
given a
link processing options
options
and
an optional
processResponse
, which is an algorithm accepting a
response
If
options
's
type
doesn't
match
options
's
destination
, then return.
If
options
's
destination
is
image
" and
options
's
source set
is not null, then set
options
's
href
to the result of
selecting an image source
from
options
's
source set
Let
request
be the result of
creating a
link request
given
options
If
request
is null, then return.
Let
unsafeEndTime
be 0.
Let
entry
be a new
preload entry
whose
integrity metadata
is
options
's
integrity
Let
key
be the result of
creating a
preload key
given
request
If
options
's
document
is null, then
set
request
's
initiator type
to
early hint
".
Let
controller
be null.
Let
reportTiming
given a
Document
document
be to
report timing
for
controller
given
document
's
relevant
global object
Set
controller
to the result of
fetching
request
, with
processResponseConsumeBody
set to the following steps
given a
response
response
and null, failure,
or a
byte sequence
bodyBytes
If
bodyBytes
is a
byte sequence
, then set
response
's
body
to
bodyBytes
as a
body
By using
processResponseConsumeBody
we have
extracted
the entire
body
. This is necessary to ensure the preloader loads the
entire body from the network, regardless of whether the preload will be consumed (which is
uncertain at this point). This step then resets the request's body to a new body containing the
same bytes, so that other specifications can read from it at the time of actual consumption,
despite us having already done so once.
Otherwise, set
response
to a
network error
Set
unsafeEndTime
to the
unsafe shared current time
If
options
's
document
is not
null, then call
reportTiming
given
options
's
document
If
entry
's
on response
available
is null, then set
entry
's
response
to
response
; otherwise call
entry
's
on response available
given
response
If
processResponse
is given, then call
processResponse
with
response
Let
commit
be the following steps given a
Document
document
If
entry
's
response
is not null, then
call
reportTiming
given
document
Set
document
's
map of preloaded resources
key
] to
entry
If
options
's
document
is null, then set
options
's
on document ready
to
commit
Otherwise, call
commit
with
options
's
document
The
fetch and process the linked resource
steps for this type of linked resource,
given a
link
element
el
, are:
Update the source set
for
el
Let
options
be the result of
creating link options
from
el
Let
destination
be the result of
translating
the keyword representing the state of
el
's
as
attribute.
If
destination
is null, then return.
Set
options
's
destination
to
destination
Preload
options
, with the following steps given a
response
response
If
response
is a
network error
fire an event
named
error
at
el
. Otherwise,
fire an event
named
load
at
el
The actual browsers' behavior is different from the spec here, and the
feasibility of changing the behavior has not yet been investigated. See
issue #1142
The
process a link header
step for this type of link
given a
link processing options
options
is to
preload
options
4.6.8.21
Link type "
privacy-policy
The
privacy-policy
keyword may be used with
link
, and
area
elements. This keyword creates a
hyperlink
The
privacy-policy
keyword indicates that the
referenced document contains information about the data collection and usage practices that apply
to the current document, as described in more detail in
Additional Link Relation
Types
. The referenced document may be a standalone privacy policy, or a specific section of
some more general document.
[RFC6903]
4.6.8.22
Link type "
The
keyword may be used with
link
area
, and
form
elements. This keyword creates a
hyperlink
The
keyword indicates that the referenced document
provides an interface specifically for searching the document and its related resources.
OpenSearch description documents can be used with
link
elements and
the
link type to enable user agents to autodiscover search
interfaces.
[OPENSEARCH]
4.6.8.23
Link type "
stylesheet
The
stylesheet
keyword may be used with
link
elements. This keyword creates an
external resource
link
that contributes to the styling processing model. This keyword is
body-ok
The specified resource is a
CSS style sheet
that describes how to present the
document.
Alternative_style_sheets
Support in one engine only.
Firefox
3+
Safari
Chrome
1–48
Opera
Yes
Edge
No
Edge (Legacy)
Internet Explorer
8+
Firefox Android
Safari iOS
Chrome Android
WebView Android
Samsung Internet
Opera Android
If the
alternate
keyword is also specified on the
link
element, then
the link is an
alternative style sheet
; in this case, the
title
attribute
must be specified on the
link
element, with a non-empty value.
The default type for resources given by the
stylesheet
keyword is
text/css
link
element of this type is
implicitly potentially render-blocking
if the element was created by its
node document
's parser.
When the
disabled
attribute of a
link
element with a
stylesheet
keyword is set,
disable
the
associated CSS style sheet
The appropriate times to
fetch and
process
this type of link are:
When the
external resource link
is created on a
link
element
that is already
browsing-context connected
When the
external resource link
's
link
element
becomes
browsing-context connected
When the
href
attribute of the
link
element of an
external resource link
that is already
browsing-context
connected
is changed.
When the
disabled
attribute of the
link
element of an
external resource link
that is already
browsing-context connected
is set, changed, or removed.
When the
crossorigin
attribute of the
link
element of an
external resource
link
that is already
browsing-context connected
is set, changed, or
removed.
When the
type
attribute of the
link
element of an
external resource link
that is already
browsing-context
connected
is set or changed to a value that does not or no longer matches the
Content-Type metadata
of the previous obtained external resource, if
any.
When the
type
attribute of the
link
element of an
external resource link
that is already
browsing-context
connected
, but was previously not obtained due to the
type
attribute specifying an unsupported type, is removed or
changed.
When the
external resource link
that is already
browsing-context
connected
changes from being
an
alternative style sheet
to not being one, or vice versa.
Quirk
: If the document has been set to
quirks mode
, has the
same origin
as the
URL
of the external resource,
and the
Content-Type metadata
of the external resource is not a
supported style sheet type, the user agent must instead assume it to be
text/css
The
linked resource fetch setup steps
for this type of linked resource, given a
link
element
el
and
request
request
, are:
If
el
's
disabled
attribute is set,
then return false.
If
el
contributes a script-blocking style sheet
append
el
to its
node document
's
script-blocking
style sheet set
If
el
's
media
attribute's value
matches the environment
and
el
is
potentially render-blocking
, then
block rendering
on
el
If
el
is currently
render-blocking
, then set
request
's
render-blocking
to true.
Return true.
See
issue #968
for plans
to use the CSSOM
fetch a CSS
style sheet
algorithm instead of the
default fetch and process the linked
resource
algorithm. In the meantime, any
critical
subresource
request
should have its
render-blocking
set to whether or not the
link
element is currently
render-blocking
To
process this type of linked resource
given a
link
element
el
, boolean
success
response
response
, and
byte sequence
bodyBytes
If the resource's
Content-Type metadata
is not
text/css
, then set
success
to false.
If
el
no longer creates an
external resource link
that contributes to
the styling processing model, or if, since the resource in question was
fetched
, it has become appropriate to
fetch
it again, then:
Remove
el
from
el
's
node
document
's
script-blocking style sheet set
Return.
If
el
has an
associated CSS style sheet
remove the CSS style sheet
If
success
is true, then:
Create a CSS style sheet
with the following properties:
type
text/css
location
response
's
URL list
[0]
We provide a URL here on the assumption that
w3c/csswg-drafts issue #9316
will
be fixed.
owner node
el
media
The
media
attribute of
el
This is a reference to the (possibly absent at this time) attribute, rather
than a copy of the attribute's current value.
CSSOM
defines what happens
when the attribute is dynamically set, changed, or removed.
title
The
title
attribute of
el
, if
el
is
in a document tree
, or the empty string otherwise.
This is similarly a reference to the attribute, rather than a copy of the
attribute's current value.
alternate flag
Set if
the link is an alternative style sheet
and
el
's
explicitly enabled
is false; unset otherwise.
origin-clean flag
Set if the resource is
CORS-same-origin
; unset otherwise.
parent CSS style
sheet
owner CSS rule
null
disabled flag
Left at its default value.
CSS rules
Left uninitialized.
This doesn't seem right. Presumably we should be using
bodyBytes
Tracked as
issue #2997
The CSS
environment encoding
is the result of running the following steps:
[CSSSYNTAX]
If
el
has a
charset
attribute,
get an encoding
from that attribute's value. If
that succeeds, return the resulting encoding.
[ENCODING]
Otherwise, return the
document's character encoding
[DOM]
Fire an event
named
load
at
el
Otherwise,
fire an event
named
error
at
el
If
el
contributes a script-blocking style sheet
, then:
Assert
el
's
node document
's
script-blocking
style sheet set
contains
el
Remove
el
from its
node
document
's
script-blocking style sheet set
Unblock rendering
on
el
The
process a link header
steps for this type of linked resource are to do
nothing.
4.6.8.24
Link type "
tag
The
tag
keyword may be used with
and
area
elements. This keyword creates a
hyperlink
The
tag
keyword indicates that the
tag
that the
referenced document represents applies to the current document.
Since it indicates that the tag
applies to the current document
, it would
be inappropriate to use this keyword in the markup of a
tag cloud
, which
lists the popular tags across a set of pages.
This document is about some gems, and so it is
tagged
with "
" to unambiguously categorize it as applying
to the "jewel" kind of gems, and not to, say, the towns in the US, the Ruby package format, or
the Swiss locomotive class:
html
lang
"en"
head
title
My Precious
title
head
body
header
><
h1
My precious
h1
Summer 2012
>
header
Recently I managed to dispose of a red gem that had been
bothering me. I now have a much nicer blue sapphire.
The red gem had been found in a bauxite stone while I was digging
out the office level, but nobody was willing to haul it away. The
same red gem stayed there for literally years.
footer
Tags:
rel
tag
href
"https://en.wikipedia.org/wiki/Gemstone"
Gemstone
footer
body
html
In
this
document, there are two articles. The "
tag
link, however, applies to the whole page (and would do so wherever it was placed, including if it
was within the
article
elements).
html
lang
"en"
head
title
Gem 4/4
title
head
body
article
h1
801: Steinbock
h1
The number 801 Gem 4/4 electro-diesel has an ibex and was rebuilt in 2002.
article
article
h1
802: Murmeltier
h1
figure
img
src
"https://upload.wikimedia.org/wikipedia/commons/b/b0/Trains_de_la_Bernina_en_hiver_2.jpg"
alt
"The 802 was red with pantographs and tall vents on the side."
figcaption
The 802 in the 1980s, above Lago Bianco.
figcaption
figure
The number 802 Gem 4/4 electro-diesel has a marmot and was rebuilt in 2003.
article
class
"topic"
><
rel
tag
href
"https://en.wikipedia.org/wiki/Rhaetian_Railway_Gem_4/4"
Gem 4/4
>
body
html
4.6.8.25
Link Type "
terms-of-service
The
terms-of-service
keyword may be used with
link
, and
area
elements. This keyword creates a
hyperlink
The
terms-of-service
keyword indicates that the
referenced document contains information about the agreements between the current document's
provider and users who wish to use the current document, as described in more detail in
Additional Link Relation Types
[RFC6903]
4.6.8.26
Sequential link types
Some documents form part of a sequence of documents.
A sequence of documents is one where each document can have a
previous sibling
and a
next sibling
. A document with no previous sibling is the start of its sequence, a
document with no next sibling is the end of its sequence.
A document may be part of multiple sequences.
4.6.8.26.1
Link type "
next
The
next
keyword may be used with
link
area
, and
form
elements. This keyword creates a
hyperlink
The
next
keyword indicates that the document is part of a
sequence, and that the link is leading to the document that is the next logical document in the
sequence.
When the
next
keyword is used with a
link
element, user agents should process such links as if they were using one of the
dns-prefetch
preconnect
, or
prefetch
keywords. Which keyword the user agent wishes to use
is implementation-dependent; for example, a user agent may wish to use the less-costly
preconnect
processing model when trying to conserve data, battery
power, or processing power, or may wish to pick a keyword depending on heuristic analysis of past
user behavior in similar scenarios.
4.6.8.26.2
Link type "
prev
The
prev
keyword may be used with
link
area
, and
form
elements. This keyword creates a
hyperlink
The
prev
keyword indicates that the document is part of a
sequence, and that the link is leading to the document that is the previous logical document in
the sequence.
Synonyms
: For historical reasons, user agents must also treat the keyword
previous
" like the
prev
keyword.
4.6.8.27
Other link types
Extensions to the predefined set of link types
may
be registered on the
microformats
page for existing rel values
[MFREL]
Anyone is free to edit the
microformats page for existing rel values
at
any time to add a type. Extension types must be specified with the following information:
Keyword
The actual value being defined. The value should not be confusingly similar to any other
defined value (e.g. differing only in case).
If the value contains a U+003A COLON character (:), it must also be an
absolute
URL
Effect on...
link
One of the following:
Not allowed
The keyword must not be specified on
link
elements.
Hyperlink
The keyword may be specified on a
link
element; it creates a
hyperlink
External Resource
The keyword may be specified on a
link
element; it creates an
external
resource link
Effect on...
and
area
One of the following:
Not allowed
The keyword must not be specified on
and
area
elements.
Hyperlink
The keyword may be specified on
and
area
elements; it creates a
hyperlink
External Resource
The keyword may be specified on
and
area
elements; it creates
an
external resource link
Hyperlink Annotation
The keyword may be specified on
and
area
elements; it
annotates
other
hyperlinks
created by the element.
Effect on...
form
One of the following:
Not allowed
The keyword must not be specified on
form
elements.
Hyperlink
The keyword may be specified on
form
elements; it creates a
hyperlink
External Resource
The keyword may be specified on
form
elements; it creates an
external
resource link
Hyperlink Annotation
The keyword may be specified on
form
elements; it
annotates
other
hyperlinks
created by the
element.
Brief description
A short non-normative description of what the keyword's meaning is.
Specification
A link to a more detailed description of the keyword's semantics and requirements. It
could be another page on the wiki, or a link to an external page.
Synonyms
A list of other keyword values that have exactly the same processing requirements. Authors
should not use the values defined to be synonyms, they are only intended to allow user agents to
support legacy content. Anyone may remove synonyms that are not used in practice; only names that
need to be processed as synonyms for compatibility with legacy content are to be registered in
this way.
Status
One of the following:
Proposed
The keyword has not received wide peer review and approval. Someone has proposed it and is,
or soon will be, using it.
Ratified
The keyword has received wide peer review and approval. It has a specification that
unambiguously defines how to handle pages that use the keyword, including when they use it in
incorrect ways.
Discontinued
The keyword has received wide peer review and it has been found wanting. Existing pages are
using this keyword, but new pages should avoid it. The "brief description" and "specification"
entries will give details of what authors should use instead, if anything.
If a keyword is found to be redundant with existing values, it should be removed and listed
as a synonym for the existing value.
If a keyword is registered in the "proposed" state for a period of a month or more without
being used or specified, then it may be removed from the registry.
If a keyword is added with the "proposed" status and found to be redundant with existing
values, it should be removed and listed as a synonym for the existing value. If a keyword is
added with the "proposed" status and found to be harmful, then it should be changed to
"discontinued" status.
Anyone can change the status at any time, but should only do so in accordance with the
definitions above.
Conformance checkers must use the information given on the
microformats page
for existing rel values
to establish if a value is allowed or not: values defined in this
specification or marked as "proposed" or "ratified" must be accepted when used on the elements for
which they apply as described in the "Effect on..." field, whereas values marked as "discontinued"
or not listed in either this specification or on the aforementioned page must be rejected as
invalid. Conformance checkers may cache this information (e.g. for performance reasons or to avoid
the use of unreliable network connectivity).
When an author uses a new type not defined by either this specification or the wiki page,
conformance checkers should offer to add the value to the wiki, with the details described above,
with the "proposed" status.
Types defined as extensions in the
microformats
page for existing rel values
with the status "proposed" or "ratified" may be used with the
rel
attribute on
link
, and
area
elements in accordance to the "Effect on..." field.
[MFREL]
US