我已经对 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
回后台。