使用chrome.windows.create创建的新窗口无法收到消息(chrome扩展名)

时间:2019-06-30 00:33:58

标签: javascript google-chrome-extension

我在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时是否有发送和接收消息的特定方法?请帮忙!

0 个答案:

没有答案