因此,我一直试图将数据从网页发送到Chrome应用程序(而不是Chrome扩展)。在我看来,这主要需要使用url_handlers从网页调用Chrome,content scripts将JS注入网页和/或Messaging用于communication与网页之间的通信。
另外,从它的.crx安装的应用程序,否则加载解压缩目录会导致以下错误:
"
content_scripts只允许用于扩展和遗留打包应用程序,但这是一个打包应用程序。“
现在,我尝试在所需的站点中注入JS。然而,在使用Chrome工具进行检查时,该站点的Sources->Content scripts部分中没有这样的条目。在使用Chrome时,它根本没有注入自己。它与扩展完美地工作,但我想使用Chrome的其他功能。
作为另一种选择,我寻找了一些Messaging示例,其中提到了它的用法:
“.您的应用程序或分机可以接收和响应来自常规网页的消息。”
但不知怎么我没能让它起作用。
两种方法中的任何一种都有标题吗?其他建议?
manifest.json:
{
"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"]
}]
}发布于 2015-07-22 09:11:46
实际上,应用程序中不可能有内容脚本。
然而,externally_connectable是有效的。
您已经声明希望通过example.com进行外部连接。(注意:定义匹配模式时要小心,例如,此模式不涵盖www.example.com)
在example.com自己的脚本中,您可以包括以下内容:
chrome.runtime.sendMessage("idOfYourAppHere", message, function(response) {
/* ... */
});在这个应用程序(可能是它的后台脚本)中,您可以用
chrome.runtime.onMessageExternal.addListener(function(message, sender, sendResponse) {
/* ... */
sendResponse(response);
});这确实要求您提前知道ID。您可以通过打包扩展并从清单中提取 field来将其固定。有关更多细节,请参见this question。
https://stackoverflow.com/questions/31552029
复制相似问题