我正在尝试创建一个简单的Chrome扩展程序,它将从页面中读取一些数据,在扩展程序图标上设置徽章计数,然后在弹出窗口中显示数据。但是我很难将我的内容脚本中的数据提供给我的背景js。
关于这一点,我已经看了很多关于这个的问题,在我看来,我做的一切都是正确的,但它仍然没有用。
这就是我所做的:
的manifest.json
{
"name": "__MSG_appName__",
"version": "0.0.1",
"manifest_version": 2,
"description": "__MSG_appDescription__",
"icons": {
"16": "images/icon-16.png",
"128": "images/icon-128.png"
},
"default_locale": "en",
"background": {
"scripts": [
"scripts.babel/chromereload.js",
"scripts.babel/background.js"
]
},
"content_scripts" : [
{
"matches": ["http://localhost:9000/*"],
"js":["scripts.babel/myscript.js"]
}
],
"permissions": [],
"browser_action": {
"default_icon": {
"19": "images/icon-19.png",
"38": "images/icon-38.png"
},
"default_title": "MiAssist",
"default_popup": "popup.html"
}
}
内容脚本:
myscript.js
"use strict";
var names = findNames();
sendNames(names);
function findNames()
{
var names = [];
//finds names..
return names;
}
function sendNames(names)
{
// Bind event:
chrome.runtime.sendMessage(null, names, null,
function(response) {
// Do something
;
});
}
background.js
'use strict';
chrome.runtime.onInstalled.addListener(details => {
console.log('previousVersion', details.previousVersion);
});
// Bind event:
chrome.runtime.onMessage.addListener(
function(names, sender, sendResponse) {
console.log("background.js");
if(names.length > 0)
{
chrome.browserAction.setBadgeText({text: names.length});
}
});
所有这一切都行不通。永远不会到达onMessage匿名函数。
有人可以帮帮我吗?任何帮助将不胜感激。谢谢。
答案 0 :(得分:1)
避免将null
用于可选参数。如果你只需要一个消息和回调 - 只传递两个这个args。
我尝试使用我的评论进行编码并且有效:
chrome.runtime.sendMessage(names,
function(response) {
console.log(response);
}
);