首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Chrome应用程序(而不是扩展)使用内容脚本/消息传递发送数据

问用Chrome应用程序(而不是扩展)使用内容脚本/消息传递发送数据
EN

Stack Overflow用户
提问于 2015-07-22 00:44:50
回答 1查看 1.5K关注 0票数 1

因此,我一直试图将数据从网页发送到Chrome应用程序(而不是Chrome扩展)。在我看来,这主要需要使用url_handlers从网页调用Chrome,content scripts将JS注入网页和/或Messaging用于communication与网页之间的通信。

另外,从它的.crx安装的应用程序,否则加载解压缩目录会导致以下错误:

"content_scripts只允许用于扩展和遗留打包应用程序,但这是一个打包应用程序。“

现在,我尝试在所需的站点中注入JS。然而,在使用Chrome工具进行检查时,该站点的Sources->Content scripts部分中没有这样的条目。在使用Chrome时,它根本没有注入自己。它与扩展完美地工作,但我想使用Chrome的其他功能。

作为另一种选择,我寻找了一些Messaging示例,其中提到了它的用法:

“.您的应用程序或分机可以接收和响应来自常规网页的消息。”

但不知怎么我没能让它起作用。

两种方法中的任何一种都有标题吗?其他建议?

manifest.json:

代码语言:javascript
复制
{
  "name": "App",
  "version": "1.0",
  "manifest_version": 2,
  "minimum_chrome_version": "31",
  "app": {
    "background": {
      "scripts": ["background.js"]
    }
  },
  "permissions": [
    {"fileSystem": ["write", "retainEntries", "directory"]},
    "storage",
    "http://example.com/*"
  ],
  "externally_connectable": {
    "matches": ["http://example.com/*"]
  },
  "content_scripts": [{
    "matches": ["http://example.com/*"],
    "js": ["content.js"]
  }]
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-22 09:11:46

实际上,应用程序中不可能有内容脚本。

然而,externally_connectable是有效的。

您已经声明希望通过example.com进行外部连接。(注意:定义匹配模式时要小心,例如,此模式不涵盖www.example.com)

在example.com自己的脚本中,您可以包括以下内容:

代码语言:javascript
复制
chrome.runtime.sendMessage("idOfYourAppHere", message, function(response) {
  /* ... */
});

在这个应用程序(可能是它的后台脚本)中,您可以用

代码语言:javascript
复制
chrome.runtime.onMessageExternal.addListener(function(message, sender, sendResponse) {
  /* ... */
  sendResponse(response); 
});

这确实要求您提前知道ID。您可以通过打包扩展并从清单中提取 field来将其固定。有关更多细节,请参见this question。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31552029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档