我可以从代码中启动Chrome扩展程序API吗?

时间:2015-06-16 07:05:18

标签: javascript google-chrome google-chrome-extension

是否可以在网站内推出Google Chrome扩展程序?例如,运行一些将启动扩展UI的JavaScript?

我正在构建一个网络应用程序,允许用户截取他们桌面的屏幕截图并进行编辑。我已经使用dektopCapture启动并运行了示例扩展程序,但它是一个应用程序'延伸的风格。

  • 它允许选择要从中流式传输的窗口,然后选择一个 扩展UI中的快照(使用按钮)保存为图像字符串

我的问题是:

是否可以启动desktopCapture UI(获取可用窗口以进行流式传输的窗口),从我的网络应用程序中启动,可能是一个按钮,将流放入画布/ HTML5视频元素中我的网络应用程序?

我想知道我可以在扩展程序中连接一个事件监听器并使用runtime.onMessage在我的应用程序中发布消息

备注

如果有更直观的方法,我可以走这条路 - 例如,如果我可以在网络应用中保持尽可能多的交互只有在后台运行的扩展程序,那会更好。

扩展程序属于browser_action类型,但我希望它适用于单个页面(应用程序的网页),因此如果它可以在page_action我使用的那个网页中使用。我更喜欢这样。如果我可以在网页中触发此操作,则无需使用browser_action图标

我还计划建立一个FF扩展程序,因此任何见解都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

所以我回答了我自己的问题。

我已成功使用externally_connectables

  

external_connectable清单属性声明了哪个   扩展程序,应用和网页可以通过以下方式连接到您的扩展程序   runtime.connect和runtime.sendMessage。

1。在manifest.json

中声明app / webpage

只需在manifest.json中将您的网络应用/页面声明为externally_connectable

E.g我想连接我的应用程序托管在Github Pages上,我的域名为 https://nicholaswmin.github.io ,所以它有点像这样:

"externally_connectable": {
  "matches": ["https://nicholaswmin.github.io/*"]
}, //rest of manifest.json

2。为background.js

中的消息设置事件侦听器

然后在background.js中设置一个事件监听器,如下所示:

chrome.runtime.onMessageExternal.addListener(function(request, sender, sendResponse) {
 //Stuff you want to run goes here, even desktopCapture calls
});

3。从您的网络/应用页面发送消息

并在您的网络应用/网站中调用它,如下所示:

chrome.runtime.sendMessage("APP ID GOES HERE", 
                       {data: { key : "capture"}});

确保您的网站在externally_connectable中被正确声明为manifest.json,并且您在发送邮件时传递了app-id