Нет ответа при отправке сообщения во всплывающее окно с помощью chrome.runtime.sendMessage () - PullRequest
0 голосов
/ 30 июня 2019

Я создаю расширение Chrome, которое содержит contextMenu и всплывающее окно. Всякий раз, когда я щелкаю правой кнопкой мыши по тексту и нажимаю на ContextMenu моего приложения, оно должно всплывать в отдельном окне с некоторой информацией в нем.

Некоторая часть eventPage.js выглядит так:

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 () { });

            chrome.runtime.sendMessage({
                msg: "something_completed",
                data: {
                    subject: "Loading",
                    content: "Just completed!"
                }
            });
            console.log(responseText)
        }).catch(err => {
            //console.log(err);
            reject(err);
        });
}).catch(err => {
    console.log(err);
});

Я вызываю popup.html, когда выбрано contextMenu, и отправляю сообщение

msg: "something_completed",
data: {
    subject: "Loading",
    content: "Just completed!"
}

с использованием runtime.sendMessage. В моем popup.js, который входит в popup.html, у него есть приемник

chrome.runtime.onMessage.addListener(
    function(request, sender, sendResponse) {
        if (request.msg === "something_completed") {
            //  To do something
            alert(request.msg)
            console.log(request.data.subject)
            console.log(request.data.content)
        }
    }
);

Однако ничего не происходит. Я следил за документацией, но, похоже, что-то не так. Любая помощь, пожалуйста?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...