【问题标题】:Detect if web app is running in NWJS检测 Web 应用程序是否在 NWJS 中运行
【发布时间】:2015-11-05 05:56:58
【问题描述】:

我正在创建一个网络应用程序,我计划从标准网站和作为 NWJS 独立应用程序交付。在 NWJS 中,我可以使用 require 命令,但不能在浏览器中使用。我可以将我的命令包装在 if 语句中:

<script>
  if (typeof require === "function") {require('nwjs-osx-menu')(window)}
</script>

还有其他可以被认为是更好的做法的方法吗?


编辑:遵循@Kuf 的建议

<script>
  if (typeof require === "function") {
    try{
      require('nwjs-osx-menu')(window)
    } catch (error) {}
  }
</script>

【问题讨论】:

  • 虽然它可以工作,但它依赖于外部模块,而我检查了“nw.gui”,它是 node-webkit 内部模块,所以即使你没有加载任何模块,这个功能也可以工作完全没有。
  • 啊!我现在明白你的技术了。如果应用程序在 NW.js 中运行,我的目标是加载“nwjs-osx-menu”,如果应用程序在浏览器中运行,则忽略它。您的目标是确定应用程序是否在 NW.js 中运行。额外问题:您的代码中是否需要 var result = false;
  • 很好,现在轮到我了 :) if (typeof require === "function") 部分是多余的,因为如果未定义要求,它将引发异常

标签: require node-webkit


【解决方案1】:

更新

如果唯一的区别是加载该库,那么您的代码似乎没问题。

原帖

有一个 web 客户端需要模块,所以这可能有点冒险。我使用了以下内容:

function is_nwjs(){
    try{
        return (typeof require('nw.gui') !== "undefined");
    } catch (e){
        return false;
    }
}

【讨论】:

    【解决方案2】:

    process.__nwjs 如果 nwjs 存在,该值将 1

    【讨论】:

      【解决方案3】:

      我的有限理解是,如果定义了process,那么你就在NWJS中,并且可以访问process.versions['nw-flavor']等字段。

      【讨论】:

      • 您的方法似乎接近了,但在测试 process.versions 对象对我来说是空的。
      猜你喜欢
      • 2021-06-01
      • 2020-01-16
      • 1970-01-01
      • 1970-01-01
      • 2019-11-22
      • 2020-10-25
      • 2018-08-25
      • 2012-06-21
      • 2011-06-12
      相关资源
      最近更新 更多