google-chrome-extension - 从 devtools(自定义选项卡)到内容脚本的消息?
问题描述
如何从 devtools(自定义选项卡)向内容脚本发送消息?
我尝试了什么:
我在这里上传了我的代码:https ://github.com/TyGu1/tryGetResponseBody 。
编码:
开发工具.html
<html>
<body>
<script src="panel.js"></script> yoyoyo
</body>
</html>
开发工具.js
chrome.devtools.panels.create("NewPanel",
null,
"panel.html",
null
);
面板.html
<html>
<body>
<script src="panel.js"></script> yoyoyo
</body>
</html>
我想从这里(Panel.js)向inject.js 发送一条消息。根据Panel.js上的这篇文章https://medium.com/better-programming/chrome-extension-intercepting-and-reading-the-body-of-http-requests-dd9ebdf2348b ,我可以使用如下所示的东西:
Panel.js
// i want to send a message from here to inject.js
chrome.runtime.sendMessage({
response: "Hallo"
});
injects.js(来自 Panel.js 的消息没有到达这里)。
alert(2); // this works
chrome.runtime.onMessage.addListener(function(response) {alert(Response)})
我看这里:
- https://developer.chrome.com/extensions/messaging
- Chrome DevTools 和扩展中的内容脚本之间的通信表明我应该将脚本发送到 Background.js 并从那里发送到内容脚本。我也试过了,但我没有让它工作。也可以添加,但是我猜这里的代码太多了。
清单.json
{
"manifest_version": 2,
"name": "Sivis Helper",
"description": "Click on any element to scrape it via rvest / RSelenium",
"homepage_url": "https://github.com/",
"version": "0.1.1",
"icons": {
"64": "icons/default-64.png"
},
"background": {
"scripts": ["background.js"]
},
"browser_action": {
"default_icon": "icons/default-64.png",
"default_title": "Click on any element to scrape it via rvest / RSelenium"
},
"content_scripts": [{
"all_frames": true,
"matches": ["<all_urls>"],
"js":["inspect.js"]
}],
"commands": {
"toggle-xpath": {
"suggested_key": {
"default": "Ctrl+Shift+U",
"mac": "Command+Shift+U"
},
"description": "Toggle plugin"
}
},
"options_ui": {
"page": "options.html"
},
"permissions": ["debugger", "pageCapture", "tabs", "activeTab", "<all_urls>", "storage", "webRequest", "clipboardWrite", "clipboardRead", "webRequestBlocking"]
}
解决方案
您可以直接向 发送消息background.js
,然后从发送消息background.js -> devtools.js
。这是一个类似的机制content script
,你需要通过tab id
推荐阅读
- python - 根据 Pandas 中相似的列 ID 将多列相乘
- google-visualization - 如何在谷歌图表的 Y 轴上显示完整的数字?
- flutter - 覆盖具有更具体类型的字段时,“'Class.field=' 不是有效的覆盖”
- javascript - 如何在自定义形状(JavaScript、jQuery UI 或 Interact JS)中拖放?
- c# - 我从我的 Web 服务收到此错误:错误 1053 服务未及时响应启动或控制请求
- nuxt.js - nuxt generate 中动态索引的动态路由
- reactjs - Ag Grid React col 等于函数获取未定义的参数
- php - 如何在 Wordpress 中使用 Php Curl 集成 SMS Api
- python - 在 python 中使用推导式表示创建列表和字典
- python - 尝试在不使用 re 或 main() 的情况下创建验证密码的函数,并将返回 true 或 false