1

我已经对 Google Chrome Extensions APIs 感到头疼了。我有清单 v3。这是我的代码:

背景.js

const actions = {
    GET_BUTTON_FROM_DOM: {
        REQUEST: 'getButtonFromDOMRequest',
        RESPONSE: 'getButtonFromDOMResponse',
    }
}

const sendMessage = (type, payload) => {
    chrome.tabs.query({ active: true, currentWindow: true }, tabs => {
        chrome.tabs.sendMessage(
            tabs[0].id,
            { type, payload },
            null,
            (e) => { alert(); console.log(e) }
        );
    });
};

chrome.action.onClicked.addListener(tab => sendMessage(actions.GET_BUTTON_FROM_DOM.REQUEST, null));

内容.js

const actions = {
    GET_BUTTON_FROM_DOM: {
        REQUEST: 'getButtonFromDOMRequest',
        RESPONSE: 'getButtonFromDOMResponse',
    }
}

chrome.runtime.onMessage.addListener((rq, sender, sendResponse) => {
    console.log(rq, sender);
    console.log(sendResponse);
    switch (rq.type) {
        case actions.GET_BUTTON_FROM_DOM.REQUEST:
            console.log('correct case');
            sendResponse({ x: 'ahoj' })
            break;
        default:
            console.log('Invalid event type!');
    }
});

这就是控制台中的内容

> {type: 'getButtonFromDOMRequest', payload: null} {id: 'ioofjdchcflmflgjjmknefnmkkpcgkjc', origin: 'null'}
> ƒ () { [native code] }
> correct case

所以我的问题是传sendRequst回后台。

4

0 回答 0