Node.js 是否可以在节点webkit窗口中加载chrome扩展

Node.js 是否可以在节点webkit窗口中加载chrome扩展,node.js,google-chrome-extension,node-webkit,Node.js,Google Chrome Extension,Node Webkit,我正在尝试使用创建node.js应用程序。是否可以在node webkit窗口中加载chrome扩展,并使其在chrome浏览器中显示 我已经通过,但我只能理解,它可以加载NPAPI插件。有没有办法将chrome扩展转换为NPAPI插件?现在,chrome中的“--load extension”开关支持加载chrome扩展 以前,由于node webkit基于Chrome的内容层,没有扩展支持。正如Roger Wang在回答中提到的,node webkit目前不支持Chrome扩展或Chrome

我正在尝试使用创建node.js应用程序。是否可以在node webkit窗口中加载chrome扩展,并使其在chrome浏览器中显示


我已经通过,但我只能理解,它可以加载NPAPI插件。有没有办法将chrome扩展转换为NPAPI插件?

现在,chrome中的“--load extension”开关支持加载chrome扩展


以前,由于node webkit基于Chrome的内容层,没有扩展支持。

正如Roger Wang在回答中提到的,node webkit目前不支持Chrome扩展或Chrome应用程序API。然而,我最初创建了一个Chrome应用程序,当谷歌显然更关注Chrome操作系统平台而不是Mac操作系统和Windows时,我们转向了node webkit

为了使通过Chrome应用程序到节点webkit的移植更容易,我创建了一些API存根,这些存根围绕着一些节点webkit、node.js和节点模块API,这些API做一些与Chrome API相同的事情

chrome.alarms.*API的存根示例: 下面是一个删除chrome.alarms.*的示例,这样它至少不会抛出错误并以静默方式失败:

 window.chrome = {
    alarms: {
        clear: function(name) {
            console.warn("not implemented.");
        },
        clearAll: function() {
            console.warn("not implemented.");
        },
        create: function(name, obj) {
            console.warn("not implemented.");
        },
        onAlarm: {
            addListener: function(callback) {
                console.warn("not implemented.");
                return;
                var alarm = {
                    name: ""
                };
                callback();
            }
        }
    }
清单和后台页面访问的存根示例: 下面是一个使用chrome.runtime.getManifest获取package.json清单的示例,以及通过chrome.runtime.getBackgroundPage访问节点webkit中的后台页面的示例,假设后台页面打开窗口,其父页面是后台页面:

    chrome.runtime: {
        getManifest: function() {
            return typeof(require) !== "undefined" ? require("../package.json") : {};
        },
        getBackgroundPage: function(callback) {
            var backgroundPage = {
                postMessage: function(message, origin) {
                    if(window.opener != null)
                        window.opener.postMessage(message, origin);
                    else
                        window.postMessage(message, origin);
                }
            };
            callback(backgroundPage);
        },
有了这个解决方案,我们或多或少只是在应用程序中添加了一个package.json文件,添加到API存根中,并在第1天运行了一个应用程序

(免责声明:这是我对node webkit的开源贡献)

你可以找到那个


出于演示目的,GitHub存储库中的代码实际上作为Chrome应用程序和node webkit应用程序运行。

谢谢!!有没有办法将chrome扩展转换为NPAPI插件?根据node webkit文档,它可以加载这种插件。@pc1500你有什么证据支持上游将其移动到内容层的说法吗?我不是在推断错误,但我很好奇,所以我可以遵循它。你有没有找到一种方法,可以用chrome应用程序而不是扩展程序来完成。我只是想要一种方法来访问随chrome扩展/应用程序附带的api…还有一种方法可以满足您的要求,比如通过插件使用扩展或插件…pc1500我想我已经发过电子邮件了you@MuhammadUmer,如果您仍在寻找解决方案,请查看。@Jagdeep-2017年有什么好运气吗?您是如何解决此问题的?文档共享、屏幕共享扩展是否与您使用最新节点webkit的解决方案配合使用?@yumyum我们在节点webkit应用程序中进行屏幕共享和文件共享。这是可能的,但我们不使用存根。我们只是使用了现有的API和废弃的Chrome应用程序。那么USB和串口呢?@Pier-如果有一种通过节点webkit使用USB和串口的原生方式,那么你可以将其包装在存根中。目前,我还没有为这些组件编写存根,所以请随意使用其他存根作为示例。希望这有帮助!似乎有一些C++节点模块来完成这一操作,但是在NWJS中使用它们需要重新编译。