javascript - chrome 扩展背景、js 到 content.js 之间的消息传递
问题描述
我想在 chrome 扩展background.js到content.js之间发送消息。
背景看起来像这样:
setInterval(function(){
chrome.tabs.query({active: true}, function(tabs){
chrome.tabs.sendMessage(tabs[0].id, {"message": "sample_msg"});
});
},
1000);
content.js 看起来像这样:
chrome.runtime.onMessage.addListener(function(message, sender) {
console.log('blablabla');
});
manifest.json 看起来像这样:
{
"manifest_version": 1,
"name": "Chrome Extension",
"description": "",
"version": "0.0.1",
"background": {
"scripts": [
"/src/background.js"
]
},
"content_scripts": [
{
"matches": [
"*://google.com/*"
],
"js": [
"/src/content.js"
],
"all_frames": true
}
],
"browser_action": {
"default_popup": "/src/popup.html"
},
"permissions": [
"<all_urls>",
"activeTab",
"tabs",
"cookies",
"background",
"contextMenus",
"unlimitedStorage",
"storage",
"notifications",
"identity",
"identity.email",
"webRequest",
"webRequestBlocking"
]
}
我读了很多,但我不明白为什么它不起作用?我可以帮忙吗?方向?评论?
解决方案
sendMessage API 似乎是正确的,但似乎 URL 匹配存在问题。
正如您在清单文件中的键中提到的那样,您的内容脚本将仅在google.com
域中注入。matches
打开google.com并检查地址栏您可以看到 URL
https://www.google.com/
,因此要将您的内容脚本注入到 google 域,您需要更改您的matches
"matches": [
"https://*.google.com/*"
]
另外,如下更改您的onMessage侦听器
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
console.log("Received message", request.message);
}
);
现在转到google.com
并刷新页面。
推荐阅读
- r - + 运算符在此 R 代码中的作用是什么?
- python - Python Panda:计算数字出现的次数
- c - 无法在 vs 代码中打开源文件
- ruby-on-rails - 在 puma 和 resque 之间共享 ActiveRecord 池资源
- wordpress - 删除 IO 上的下拉选项
- r - 使用 Purrr 或 Furrr 进行过滤,并将字符向量传递给附加函数
- sql - 如何进行连接以获取前几天的值?
- c++ - OpenDDS 入门 - 创建在设备之间传输数据的文件
- multidimensional-array - 如何用ndarray将矩阵乘以视图?
- javascript - 如何从所有键都相同的数组中提取对象