JavaScript :Document 属性
一、文档类型定义 doctype
通过 document.doctype 可以获取文档关联的文档类型定义。
-
返回的对象实现了 DocumentType 接口的
DocumentType对象const doc = document.doctype;
属性:
entities: 返回包含有在 DTD 中所声明的实体的 NamedNodeMap。internalSubset: 以字符串形式返回内部 DTD。name: 返回 DTD 的名称。notations: 返回包含 DTD 声明的符号的 NamedNodeMap。systemId: 返回外部 DTD 的系统标识符。 -
创建一个 DocumentType 类型的对象
使用
语法:DOMImplementation.createDocumentType()方法可以创建一个 DocumentType 类型的对象。
var doctype = document.implementation.createDocumentType(qualifiedNameStr, publicId, systemId);参数:
示例:qualifiedNameStr:DOMString类型的值,包含一个合规的名称,如svg:svg。
publicId:DOMString类型的值,包含PUBLIC标识符。systemId:DOMString类型的值,包含SYSTEM标识符。
var dt = document.implementation.createDocumentType(
'svg:svg',
'-//W3C//DTD SVG 1.1//EN',
'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'
); var d = document.implementation.createDocument('http://www.w3.org/2000/svg', 'svg:svg', dt); alert(d.doctype.publicId); // -//W3C//DTD SVG 1.1//EN
二、文档字符集 characterSet
-
获取渲染当前文档的字符集
console.log(document.characterSet);// "UTF-8"
三、文档标题 title
-
获取当前文档的标题
// 设置文档标题 document.title = 'Hello world!';
四、文档加载状态 raedyState
document.readyState 描述文档的加载状态,当该状态属性值发生变化时,会在 document 对象上触发 readystatechange 事件。
- 可取值:
loading/ 正在加载:文档仍在加载interactive/ 可交互:文档已被解析,正在加载状态结束,但是诸如图像、样式表和框架之类的子资源仍在加载complete/ 完成:文档和所有子资源已完成加载,表示load状态的事件即将被触发 -
示例:
根据不同的加载状态处理不同逻辑switch (document.readyState) { // 表示文档还在加载中,即处于“正在加载”状态 case 'loading': break; // 文档已经结束了“正在加载”状态,DOM元素可以被访问 // 但是图像、样式表和框架等资源依然还在加载 case 'interactive': const span = document.createElement('span'); span.textContent = 'A <span> element'; document.body.appendChild(span); break; // 页面所有内容都已被完全加载 case 'complete': const cssRule = document.styleSheets[0].cssRules[0].cssText; console.log(`The first CSS rule is:${cssRule}`); break; }
-
模拟 DOMContentLoaded / jQuery ready
document.onreadystatechange = function() { if (document.readyState === 'interactive') { initApplication(); } };
-
模拟 load 事件
document.onreadystatechange = function() { if (document.readyState === 'complete') { initApplication(); } };
五、标识节点指针
-
当前文档直接子节点 documentElement
通过
document.documentElement获取当前文档的直接子节点。对于 HTML 文档,HTMLHtmlElement 对象一般代表该文档的<html>元素。const rootElement = document.documentElement; const firstTier = rootElement.childNodes; // firstTier 是由根元素的所有子节点组成的一个 NodeList for (let i = 0; i < firstTier.length; i++) { // 使用根节点的每个子节点 // 如 firstTier[i] }
-
当前文档主体节点 body
// 通过 document.body 获取当前文档中的 <body> 元素或者 <frameset> 元素。 const body = document.body; console.log(body.nodeName);// 'BODY'
- 当前文档头部节点 head
// 通过 document.head 获取当前文档中的 <head> 元素。如果有多个 <head> 元素,则返回第一个。 const head = document.head; console.log(head.nodeName);// 'HEAD'
-
当前页面焦点元素 activeElement
// 通过 document.activeElment 指向当前页面获得焦点的元素。 const activeElement = document.activeElement.tagName; console.log(activeElement.nodeName);// 焦点元素节点名
文档加载完成后:document.activeElement 指向 document.body文档加载期间:document.activeElement 指向 null❗️使用该属性可以巧妙地判断文档是否加载完成。
⚠️注意: 该属性是只读的。
❗️提示: 为元素设置焦点,可以使用 element.focus() 方法。
❗️提示:可以使用 document.hasFocus() 方法来查看当前元素是否获取焦点。
六、文档元素集合
-
当前页面所有标签列表 all
const all = document.all;
解释:
all 集合返回对文档中所有HTML元素的引用。
all[]是一个多功能的类似数组的对象,它提供了对文档中所有HTML元素的访问。
all[]已经被Document接口的标准的getElementById()方法和getElementsByTagName()方法以及Document对象的- getElemenstByName()方法所取代,尽管如此,这个all[]数组在已有的代码中仍然使用。all[]包含的元素保持了最初的顺序,如果你知道它们在数组中的确切数字化位置,可以直接就从数组中提取它们,然而更为常见的是使用all[]数组,根据它们的HTML属性name 或 id 来访问元素。如果多个元素拥有指定的name,将得到共享同一名称的元素数组。
用法:
<h1>h1</h1> <p>段落</p> <input type="text" value="文本框"> <script> onload = function () { console.log(document.all); } </script>
console.log()打印输出:
![]()
1)通过 index 获取元素:document.all[index](index为要取的下标)
2)通过 id 属性获取元素:document.all.idid不可以重复
<input id="a" value="b"> <script type="text/javascript"> alert(document.all.a.value); // 根据 id获取value </script>
如果id相同:
<input id="aa" value="a1"> <input id="aa" value="a2"> <script type="text/javascript"> alert(document.all.aa.value); //显示undefined,而不是a1或者a2 </script>
3)通过 name 属性来获取元素:document.all.name[index](name可以重复)
<input name="ab" value="a1"> <input name="ab" value="a2"> <script type="text/javascript"> alert(document.all.ab[0].value) //显示a1 alert(document.all.ab[1].value) //显示a2 </script>
-
当前页面超链接元素列表 links
获取当前文档的所有
<a>元素// 返回文档的链接数 document.links.length; // 返回文档第一个链接 document.links[0];
提示: links 集合计算 <a href=""> 标签和 <area> 标签。
-
当前页面样式表列表 styleSheets
document.styleSheets可以返回由网页中所用到的样式表组成的数组,但是不包括直接嵌在元素里的style。const styleSheets = document.styleSheets;
-
当前页面脚本标签列表 scripts
返回页面中的
<script>列表const scripts = document.scripts;
-
当前页面图片标签列表 images
const images = document.images;
-
当前页面锚点元素列表 anchors
const anchors = document.anchors;
-
当前页面表单元素列表 forms
const forms = document.forms;
七、文档位置信息
-
文档网址 documentURI
通过
document.documentURI获取当前文档的网址。HTML 文档有一个
document.URL属性返回同样的值,但是不像 URL,document.documentURI适用于所有类型的文档。console.log(document.documentURI); // "https://www.google.com/"
-
文档地址 URL
通过
document.URL获取当前文档的网址。该属性的值和 DOM Level 0 中的
document.location.href属性的值是相等的,然而document.location.href是可写的,document.URL是只读的。 -
文档域名 domain
获取/设置当前文档的原始域名,用于同源策略。
如果当前文档的域无法识别,那么 domain 属性会返回
null。console.log(document.domain); // "www.google.com"
-
文档访问来源 referrer
通过
document.referrer获取当前文档的访问来源如果用户直接打开了这个页面,而不是页面跳转,或通过地址栏或书签等打开的,则该属性为空字符串。由于该属性只是返回一个字符串,所以不能够通过该属性引用页面的 DOM。
console.log(document.URL); // "https://google.com/search?xxxxxxxx" console.log(document.referrer); // "https://www.google.com/"
-
文档定位 location
获取
location对象,提供当前文档的 URL 信息console.log(document.location); // { // href: "https://www.google.com/", // ancestorOrigins: undefined, // origin: "https://www.google.com", // protocol: "https:", // host: "www.google.com", // hostname: "www.google.com", // pathname: "/", // Symbol(Symbol.toPrimitive): undefined, // }
八、网络通讯相关
-
缓存字段
通过
document.cookie获取 Cookie。每个 Cookie 都是一个名/值对,如果要一次存储多个名/值对,可以使用分号加空格(
;)隔开。// 设置 cookie document.cookie = 'uid=123'; document.cookie = 'username=ben'; // 获取 cookie console.log(document.cookie); // "uid=123;username=ben"
-
强缓存字段
通过
document.lastModified可以获知文档最后修改时间。const time = document.lastModified; console.log(time); // 09/19/2020 05:09:31
九、其他属性
-
获取当前文档的所有表单元素
document.formas;
-
获取当前文档中所有嵌入对象
document.embeds;
-
获取当前文档最后修改的时间戳
document.lastModified;
-
控制当前文档是否可编辑
document.designMode;

浙公网安备 33010602011771号