Electron: 如何检测是否在电子中运行?

创建于 2015-07-21  ·  10评论  ·  资料来源: electron/electron

如何在 JavaScript 中检测应用程序是否在电子框架内运行?

最有用的评论

我一直对使用window && window.process && window.process.type来检测我们是否在 Electron 中运行有点不满意,因为它非常模糊,很容易被不是 Electron 的东西使用。

由于电子在用户代理中显示,我建议执行以下操作(在 1.7.5 中测试工作):

var userAgent = navigator.userAgent.toLowerCase();
if (userAgent.indexOf(' electron/') > -1) {
   // Electron-specific code
}

此外,您的应用程序名称显示在用户代理字符串中,如果您有应用程序不同变体的代码,这将很有帮助。

所有10条评论

window && window.process && window.process.type

还有process.versions['electron']

如果我们在没有节点集成的情况下运行流程怎么办? 我想到目前为止我一直在转发 navigator.userAgent ,有没有更好的方法呢?

似乎这已被合并,但我注意到这个项目为它提供了一个很好的功能,而不是直接在代码中使用条件子句: https ://github.com/cheton/is-electron

我一直对使用window && window.process && window.process.type来检测我们是否在 Electron 中运行有点不满意,因为它非常模糊,很容易被不是 Electron 的东西使用。

由于电子在用户代理中显示,我建议执行以下操作(在 1.7.5 中测试工作):

var userAgent = navigator.userAgent.toLowerCase();
if (userAgent.indexOf(' electron/') > -1) {
   // Electron-specific code
}

此外,您的应用程序名称显示在用户代理字符串中,如果您有应用程序不同变体的代码,这将很有帮助。

有关信息:

前两种方法对我不起作用,但@richjeffery的方法工作正常。 自2015 年以来,情况可能发生了变化。

不建议使用window.process 。 下面推理。

  1. 它在<webview>中不可用
  2. 它在<iframe>中不可用
  3. 如果节点进程被禁用,它将不可用。

IMO 我们都应该使用@richjeffery的解决方案,或者 Electron 团队应该为所有上下文提供一个全局属性以进行不可欺骗的检测。

@zcbenz建议之后,这 3 个对我有用:

if (process.versions.hasOwnProperty('electron')) {
  // Electron specific code
}else{
}

```JavaScript
if (typeof (process.versions.electron) === 'string') {
// 电子特定代码
}别的{
}

```JavaScript
var WHY = (process.versions.hasOwnProperty('electron')) ? /*expression for Electron*/ : /*other expression*/;`

但是我可以看到navigator.userAgent与 @richjeffery 提出的 Electron 应用程序名称相结合的优势。

+1 全局属性

只是为了澄清那些刚刚发现这一点的人:上面的讨论没有提到该方法是否适用于脚本或渲染器脚本。

  • 对于脚本,它们作为 Node 进程运行,因此请使用process.versions.hasOwnProperty('electron')或等效的

  • 对于渲染器脚本,它们在浏览器中运行,因此请使用/electron/i.test(navigator.userAgent)或等效的

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

diracdeltas picture diracdeltas  ·  3评论

dangan-ronpa picture dangan-ronpa  ·  3评论

DanielDignam picture DanielDignam  ·  3评论

tenry92 picture tenry92  ·  3评论

sindresorhus picture sindresorhus  ·  3评论