如何检测 Web 应用程序是否在 Electron 中运行

IT技术 reactjs web electron desktop-application
2021-05-02 10:45:57

我正在尝试在电子应用程序上提供真正的react应用程序。这并不意味着我正在开发带有react的电子应用程序。我创建了一个 react 应用程序并将其注入到电子应用程序中。(与 slack 一样,它将用作 Web 应用程序和桌面应用程序。)但我对发送桌面通知感到困惑。

现在的主要问题是:如何获取应用程序类型。我的意思是,用户是在网络上还是在桌面上使用我的应用程序。我怎样才能得到这个?

谢谢 :)

1个回答

有很多方法可以检测您是否在桌面环境中运行。

您可以检查User-AgentuserAgent在调用loadURL时在 Electron 中设置该

另一种方法是使用preload脚本声明一个全局变量

// main process
new BrowserWindow({
  webPreferences: {
    preload: "preload.js",
  },
});

// preload.js 
// you don't need to use contextBridge if contextIsolation is false
// but it's true by default in Electron 12
const { contextBridge } = require("electron"); 
contextBridge.exposeInMainWorld("IN_DESKTOP_ENV", true);

// renderer process (your React world)
if (globalThis.IN_DESKTOP_ENV) {
  // do something...
}

在此处输入图片说明