是否可以在node-webkit窗口中加载chrome扩展

时间:2013-06-14 20:09:09

标签: node.js google-chrome-extension node-webkit

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

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

2 个答案:

答案 0 :(得分:7)

现在支持加载Chrome扩展程序,并使用Chromium的“--load-extension”切换。

以前,由于node-webkit基于Chromium的Content Layer,因此没有Extension支持。

答案 1 :(得分:4)

正如Roger Wang在回答中提到的那样,node-webkit目前不支持Chrome扩展程序或Chrome App API。但是,我最初创建了一个Chrome应用程序,当很明显Google更多地关注Chrome操作系统平台而不是Mac OS和Windows时,我们切换到了node-webkit。

为了更轻松地将我们的Chrome应用移植到node-webkit,我创建了一些API存根,这些存根包含了一些node-webkit,Node.js和节点模块API,它们执行的操作与Chrome API。

chrome.alarms的示例存根。* API:

这是一个stubs out 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访问node-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的开源贡献)

您可以找到"node-webkit-chrome-api-stubs" in my GitHub repository

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