我在Chrome扩展程序中创建了一个contextMenu。
chrome.contextMenus.onClicked.addListener(function (clickData) {
let header = new Headers({
'Access-Control-Allow-Origin': '*',
'Content-Type': 'application/json'
});
let myInit = {
method: 'GET',
headers: header,
mode: 'cors',
cache: 'default'
};
url = 'URL HERE'
return new Promise((reslove, reject) => {
fetch(url, myInit)
.then(response => response.json())
.then(responseText => {
var popup_url = 'popup.html'
var createData = {
"url": popup_url,
"type": "popup",
"top": 5,
"left": 5,
"width": 500,
"height": 500
};
chrome.windows.create(createData, function () {});
console.log(responseText)
}).catch(err => {
//console.log(err);
reject(err);
});
}).catch(err => {
console.log(err);
});
});
单击contextMenu项时,它将使用文件中也包含的popup.html
创建一个新窗口。
当我添加回调函数以将消息发送到popup.js
时,如下所示
chrome.windows.open(createData, function () {
chrome.runtime.sendMessage({
msg: "something_completed",
data: {
subject: "Loading",
content: "Just completed!"
}
});
});
然后我添加一个onMessage.addListener
来接收popup.js
之类的消息,
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
if (request.msg === "something_completed") {
// To do something
console.log(request.data.subject)
console.log(request.data.content)
}
}
);
这根本不起作用。 alert
之类的所有其他基本功能都可以使用,但是消息传递不正确。这是因为我使用了windows.create
吗?使用windows.create
时是否有发送和接收消息的特定方法?请帮忙!