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

标签 reactjs web electron desktop-application

我正在尝试在 Electron 应用程序上提供真正的 react 应用程序。这并不意味着我正在开发带有反应的 Electron 应用程序。我创建了一个 react 应用程序并将其注入(inject)到 Electron 应用程序中。 (就像 slack 一样,它将用作 Web 应用程序和桌面应用程序。)但我对发送桌面通知感到困惑。
现在主要问题是:
如何获取应用程序类型。我的意思是,用户是在网络上还是在桌面上使用我的应用程序。我怎样才能得到这个?
谢谢 :)

最佳答案

有很多方法可以检测您是否在桌面环境中运行。
您可以查看User-Agent你可以设置userAgent当您调用 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...
}
enter image description here

关于reactjs - 如何检测 Web 应用程序是否在 Electron 中运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66452855/

相关文章:

javascript - 获取登录屏幕的 typeError react native?

php - 允许Web服务器编辑Docker容器内的文件

html - 我们如何缓存 HTML "fragments"?

javascript - 获取变量中回调的结果

npm - 使用Sqlite3的 Electron 应用程序- fatal error :错误::错误napi_create_reference

javascript - Youtube 视频在浏览器上播放,但不在 electron-js 应用程序上播放

reactjs - react : Can the global state of the stores be manipulated in the browser?

javascript - 如何同时映射两个数组?

javascript - 如何检查 id IndexedDB 是否已存在于 React 生命周期方法中

java - Java Servlet 中的数字格式异常