Javascript 通过Chrome应用程序(非扩展)使用内容脚本/消息发送数据
所以我一直在尝试将数据从网页发送到Chrome应用程序(而不是Chrome扩展)。根据我的理解,这主要需要从网页调用Chrome应用程序,将JS注入网页和/或Chrome应用程序与网页之间的通信 另外,从其Javascript 通过Chrome应用程序(非扩展)使用内容脚本/消息发送数据,javascript,google-chrome,google-chrome-app,content-script,message-passing,Javascript,Google Chrome,Google Chrome App,Content Script,Message Passing,所以我一直在尝试将数据从网页发送到Chrome应用程序(而不是Chrome扩展)。根据我的理解,这主要需要从网页调用Chrome应用程序,将JS注入网页和/或Chrome应用程序与网页之间的通信 另外,从其.crx安装的应用程序,否则加载未打包目录会导致此错误: content\u脚本仅允许用于扩展和旧式打包应用,但这是打包应用 现在,我尝试在所需的站点中注入JS。但是,在使用Chrome开发工具进行检查时,该站点的源代码->内容脚本部分中没有此类条目。在使用Chrome应用程序时,它只是没有注
.crx
安装的应用程序,否则加载未打包目录会导致此错误:
content\u脚本
仅允许用于扩展和旧式打包应用,但这是打包应用
现在,我尝试在所需的站点中注入JS。但是,在使用Chrome开发工具进行检查时,该站点的源代码->内容脚本部分中没有此类条目。在使用Chrome应用程序时,它只是没有注入自身。它与扩展完美结合,但我想使用Chrome应用程序实现其他功能
作为一种替代方法,我寻找了一些例子,其中提到了它的用法:
“…您的应用程序或扩展可以接收和响应来自常规网页的消息。”
但是,不知何故,我无法让它工作。
这两种方法都有头吗?其他建议
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"]
}]
}
事实上,应用程序中不能有内容脚本
然而,这是有效的
您已经声明要从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。您可以通过打包扩展并从清单中提取扩展来锁定它。有关更多详细信息,请参阅。谢谢您的提醒。所以内容脚本被完全排除在外。这对我来说是至关重要的信息。另外,前面我已经看过了你提到的代码片段的一个版本。事实上,它起了作用!我想我是在background.js中尝试console.log()
,但没有打印出来。这次我试着在example.com脚本的回调中打印并完成了#接受:)在类似的行中,如何调试background.js中的内容?您需要打开background.js
的开发工具。您可以从chrome://extensions
page,查找应用程序的条目。请注意,后台页面将在空闲时卸载(并丢失所有控制台输出),除非其Dev Tools处于打开状态。chrome://inspect/#apps
page.啊,明白了!从chrome://extensions
page它为background.js
打开控制台。甚至,右键点击Chrome应用程序本身也可以选择“查看背景页面”。感谢您通知chrome://inspect/#apps
第页。