Просто начинаю учиться писать расширение Chrome. Моя цель - писать в консоль из фона js при нажатии на значок панели инструментов.
Мое понимание из прочитанных мною учебников состоит в том, что, если всплывающее окно не указано, значок будет действовать как кнопка, а при щелчке левой кнопкой мыши вызывается обратный вызов onClicked. Вместо этого на самом деле происходит щелчок левой кнопкой мыши по контекстному меню по умолчанию; обратный вызов никогда не вызывается - вероятно, по этой причине.
Я уверен, что мне не хватает чего-то очень простого; было бы очень полезно, если бы кто-то мог указать на это. Для записи я использую Chrome версию 80.0.3987.163 на Ма c.
Спасибо всем заранее.
Манифест:
{
"name": "Test",
"version": "1.0",
"description": "",
"manifest_version": 2,
"permissions": ["declarativeContent"],
"page_action": {
"default_icon": {
"16": "images/get_started16.png",
"32": "images/get_started32.png",
"48": "images/get_started48.png",
"128": "images/get_started128.png"
}
},
"icons": {
"16": "images/get_started16.png",
"32": "images/get_started32.png",
"48": "images/get_started48.png",
"128": "images/get_started128.png"
},
"content_scripts": [
{
"matches": ["*://*.reddit.com/r/*"],
"js": ["content.js"]
}
],
"background": {
"scripts": ["background.js"],
"persistent": false
}
}
содержание . js:
console.log("Content script running...");
фон. js:
console.log("Background script running...");
const iconRules = [{
conditions: [
new chrome.declarativeContent.PageStateMatcher({
pageUrl: {hostEquals: 'reddit.com'},
})
],
actions: [new chrome.declarativeContent.ShowPageAction()]
}];
chrome.declarativeContent.onPageChanged.removeRules(undefined, function() {
chrome.declarativeContent.onPageChanged.addRules(iconRules);
});
chrome.pageAction.onClicked.addListener(function(){
chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
console.log("Clicked!")
})
});
При посещении reddit:
Показывает выделенный значок.
При щелчке левой кнопкой мыши по значку:
Отображается контекстное меню по умолчанию.