Я хочу вызвать клик, который прослушивает следующий код:
chrome.browserAction.onClicked.addListener(function(tab) {});
Причина в том, что у меня есть рабочее расширение, которое слушает в background-script(addListener выше) и выполняет несколько скриптов при нажатии:
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.executeScript(tab.id, {file: 'abc.js'});
chrome.tabs.executeScript(tab.id, {file: 'xxx.js'});
});
А теперь я хочу вызвать это "onClicked" из контекстного меню:
var myContextPage = chrome.contextMenus.create({"title": myTitle, "contexts":["page"],
"onclick": fctContext});
Итак, я подумал, что самым простым способом было бы иметь «щелчок» в fctContext.Может быть, есть лучший способ, но я не знаю, как решить мою проблему.Я также пытался запустить "executeScript", но это тоже не работает.
Заранее спасибо!
// Обновление
Решение из ответов: Это решение работает:
//Shared code. When the argument length is two, it is coming from the context
// menu, while a single argument is coming from the browser action.
function fctContext() {
var tab = arguments.length == 2 ? arguments[1] : arguments[0];
// Do whatever you want with the tab.
}
// Browser Action
chrome.browserAction.onClicked.addListener(fctContext);
// Context Menu
chrome.contextMenus.create({
title: myTitle,
contexts: ['page'],
onclick: fctContext
});
Решение после тестирования некоторых других вещей:
function fctStart() {
chrome.tabs.getSelected(null, function(tab){
chrome.tabs.executeScript(tab.id, {file: 'abc.js'});
chrome.tabs.executeScript(tab.id, {file: 'xxx.js'});
});
}
Вв этом случае fctStart()
работает из любой точки без необходимости прохода по вкладке.