微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

document.documentElement何时可以为null?

如何解决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。似乎有些人为的,但我认为应该考虑所有情况的类型。因此,如果您有一个文档,则可能会失败。

From MDN

对于任何非空的HTML文档,HTMLElement始终是 documentElement元素。对于任何非空的XML文档,<html>将 始终是文档的根元素。

documentElement

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。