Добавить элементы контекстного меню в кнопку действия браузера расширения Chrome
Расширение G G может иметь действие браузера. Обычно разработчик ext отображает параметры, когда вы нажимаете на него, а это означает, что для каждого действия требуется два клика, даже действие по умолчанию 99% времени. Сам Chrome добавляет контекстное меню с несколькими параметрами: отключить ext, удалить ext, перейти на домашнюю страницу и т.д.
Могу ли я, поскольку разработчик ext добавить элементы в это контекстное меню, так что я могу сохранить свой 1-клик-действие под нормальным/левым/основным щелчком мыши?
Я знаю chrome.contextMenus, но это только для контекстных меню на странице (см. свойство contexts ').
Я не могу найти его в руководстве Chrome Extension dev, но вы знаете больше, чем я.
Ответы
Ответ 1
теперь возможно, у него есть расширения Chrome. Ниже приведен рабочий пример "контекстного меню в действии браузера".
manifest.json:
{
"name": "Custom context menu in browser action",
"version": "1",
"manifest_version": 2,
"background": {
"scripts": ["background.js"]
},
"browser_action": {
"default_title": "Some tooltip",
"default_popup": "popup.html"
},
"permissions": [
"contextMenus"
],
"icons": {
"16": "icon16.png"
}
}
background.js:
chrome.contextMenus.removeAll();
chrome.contextMenus.create({
title: "first",
contexts: ["browser_action"],
onclick: function() {
alert('first');
}
});
Обратите внимание, что если вы используете страницу событий, вы не можете использовать атрибут onclick
; вам нужно будет добавить слушателя вместо chrome.contextMenus.onClicked
.
Ответ 2
Невозможно добавить любые пользовательские записи в контекстное меню.
Вы можете, однако, динамически назначить панель кнопке с chrome.browserAction.setPopup
. Вы можете использовать страницу , чтобы пользователь мог выбрать предпочтительный вариант (однократное действие или два клика и несколько действий). Тот факт, что страница параметров находится всего в двух кликах от кнопки, также довольно приятна.
Здесь пример кода, чтобы проиллюстрировать концепцию переключения между панелями и одним щелчком мыши.
background.js
(используется в event/справочная страница):
chrome.browserAction.onClicked.addListener(function() {
// Only called when there no popup.
alert('Next time you will see a popup again.');
chrome.browserAction.setPopup({
popup: 'popup.html'
});
});
popup.html
, просто для демонстрации (используйте CSS, чтобы он выглядел лучше):
<button>Click</button>
<script src="popup.js"></script>
popup.js
, только для демонстрации. JavaScript должен быть помещен в отдельный файл из-за CSP.
document.querySelector('button').onclick = function() {
chrome.browserAction.setPopup({
popup: '' // Empty string = no popup
});
alert('Next time, you will not see the popup.');
// Close panel
window.close();
};
Как вы можете видеть в этом примере, chrome.browserAction.setPopup
также доступен на всплывающей странице.
PS. manifest.json
, поэтому вы можете скопировать-вставить пример и сыграть с этим ответом.
{
"name": "Test badge - minimal example",
"version": "1",
"manifest_version": 2,
"background": {
"scripts": ["background.js"]
},
"browser_action": {
"default_title": "Some tooltip"
}
}