Новое окно, созданное с использованием chrome.windows.create, не может получить сообщение (расширение chrome) - PullRequest
0 голосов
/ 30 июня 2019

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

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