如何解决document.documentElement何时可以为null?
我遇到了Flow的一个用例,当我使用document.documentElement
时,我需要先对其进行类型优化,因为它有可能如其内置定义中所定义的那样为null。
https://github.com/facebook/flow/blob/8391250177e37a047a33ae728fdbd1138632294a/lib/dom.js#L824
const { documentElement } = document;
if (documentElement instanceof HTMLElement) {
// continue doing stuff
}
做一个简单的谷歌不会产生任何结果,为什么是这种情况。所以我的问题是,什么时候该值可以为null或lib defs是一个错误?
解决方法
我认为它直接来自规范的类型定义。在“空文档”的情况下,var coordObj = [];
var divs = document.getElementsByTagName('div');
for (i = 0; i < divs.length; i++) {
var hasHorizontalScrollbar = divs[i].scrollWidth > divs[i].clientWidth;
var hasVerticalScrollbar = divs[i].scrollHeight > divs[i].clientHeight;
if(hasVerticalScrollbar || hasHorizontalScrollbar) {
var getCoords=divs[i].getBoundingClientRect();
coordObj.push(getCoords);
}
}
return coordObj;
可能是任何元素或没有元素。您可以构造Document#documentElement
,因此在某些情况下它可能不是Document
。似乎有些人为的,但我认为应该考虑所有情况的类型。因此,如果您有一个空文档,则可能会失败。
对于任何非空的HTML文档,
HTMLElement
始终是documentElement
元素。对于任何非空的XML文档,<html>
将 始终是文档的根元素。
documentElement
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。