gpt4 book ai didi

javascript - window.document 是否为空或未定义?

转载 作者:数据小太阳 更新时间:2023-10-29 04:14:01 25 4
gpt4 key购买 nike

我一直在对 window.document 对象进行一些研究,以确保我的 JavaScript 解决方案之一是可靠的。是否存在 window.document 对象为 null 或未定义的情况?

为了便于讨论,这里有一段不相关的示例代码。这段代码是否会在任何情况下失败(也就是抛出异常)?

$(document).ready(function() {
var PageLoaded = (window.document.readyState === "complete");
});

最佳答案

Is there ever a case when the window.document object is null or undefined?

是的,对于不在文档中的 JavaScript 代码(例如 node.js)。但是这样的代码也可能没有窗口对象(尽管它会有一个全局对象)。

对于符合 W3C DOM 的用户代理中的 HTML 文档中的代码,没有。

> Are there any situations in which this piece of code will fail (i.e. throw
> an exception)?
>
> [snip jQuery code]

它会在以下地方失败:

  1. jQuery ready 功能失败(至少在某些浏览器中可能会失败,尽管在桌面和某些移动设备上流行的浏览器不是这样),
  2. 没有窗口对象,或者
  3. 没有window.document对象

要确信代码在各种主机中工作,您可以执行以下操作:

  if (typeof window != 'undefined' && window.document &&
window.document.readyState == whatever) {
// do stuff
}

这没有太多额外要写的,而且可能只需要完成一次。

备选方案:

(function (global) {
var window = global;
if (window.document && window.document.readyState == whatever) {
// do stuff
}
}(this));

(function (global) {
var window = global;

function checkState() {
if (window.document && window.document.readyState) {
alert(window.document.readyState);
} else {
// analyse environment
}
}
// trivial use for demonstration
checkState();
setTimeout(checkState, 1000);
}(this));

关于javascript - window.document 是否为空或未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12118971/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com