Я создал contextMenu в своем расширении Chrome.
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
? Пожалуйста, помогите!