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

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

我已经通过这个,但我只能够明白,它可以加载NPAPI插件。 有没有办法将Chrome扩展名转换为NPAPI插件?

现在,使用Chromium的“–load-extension”开关支持加载Chrome扩展程序。

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

正如Roger Wang在他的回答中提到的,node-webkit目前不支持Chrome扩展或Chrome应用程序API。 不过,我最初创build了一个Chrome应用程序,并且很明显,当Google比Mac OS和Windows更专注于Chrome OS平台时,我们切换到了node-webkit。

为了更方便地将我们的Chrome应用程序移植到node-webkit,我创build了一些API存根,这些API存根包裹了一些node-webkit,Node.js和节点模块API,这些API与Chrome API有一些相同的function。

chrome.alarms的示例存根* API:

这里有一个例子,将stubs out chrome.alarms。*,以至于它至less不会抛出错误,并沉默地失败:

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); }, 

有了这个解决scheme,我们或多或less只是将一个package.json文件添加到应用程序,添加到API存根中,并在第一天有一个正在运行的应用程序。

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

你可以在我的GitHub仓库中find“node-webkit-chrome-api-stubs” 。

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