gpt4 book ai didi

javascript - 在 javascript 中检测 [object Window] 的 "Window"部分

转载 作者:行者123 更新时间:2023-11-29 22:24:27 28 4
gpt4 key购买 nike

在 javascript 中检测 [object Window] 的“Window”部分和/或判断代码是在 Node 服务器还是浏览器上运行

更多上下文。我正在为应该在客户端和服务器上运行的 nodejs 编写一个模块。我需要在几个地方做不同的事情,所以我需要检测它在哪里运行。现在我将“this”传递给 init 函数,该函数在服务器上为我提供 [object Object],在浏览器中为我提供 [object Window]。 ...但我不知道如何检查 Window/Object 部分。 typeof 似乎只是检查领先的“对象”部分。想法?提前致谢

最佳答案

如果你确定你会在 node.js 中收到 [object Object] 并在浏览器中收到 [object Window],那么只需检查

var isBrowser = (this.toString().indexOf('Window') != -1);
var isServer = !isBrowser;

字符串的 indexOf 方法检查其参数在该字符串中的位置。返回值 -1 表示参数不作为子字符串出现。

更新

正如其他人所建议的那样,只检查 window 对象是否存在,您可以等效地检查您希望在浏览器中出现的其他对象,例如 navigator位置。但是,上面已经建议了这种检查:

var isBrowser = (this.window == this);

最终会在 node.js 中出现引用错误。正确的做法是

var isBrowser = ('window' in this);

或者,正如我所说

var isBrowser = ('navigator' in this);
var isBrowser = ('location' in this);

关于javascript - 在 javascript 中检测 [object Window] 的 "Window"部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10466696/

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