Как вызвать определенную функцию из файла JS с расширением Chrome - PullRequest
0 голосов
/ 08 июня 2018

Я пишу расширение для Chrome и пытаюсь выяснить, как я могу вызвать определенную функцию из моего script.js файла из background.js файла.

Пока что мой файл background.jsвыглядит так:

chrome.browserAction.onClicked.addListener(function(tab) {
    chrome.tabs.executeScript(null, {file: "script.js"});
});

, который запускает все файлы js из моего script.js файла, когда пользователь выбирает значок расширения.

Однако я хотел бы, чтобы script.js содержал двафункций, и когда пользователь выбирает значок расширения, он переключается между каждой функцией.

Например, если мой script.js файл выглядит как

function makeChanges(){

 // some functinality

}


function undoChanges(){

  // some other functionality 

}

, как бы я конкретно получил один изфункции для запуска при нажатии на значок расширения?Возможно ли это с помощью executeSript?

Ответы [ 2 ]

0 голосов
/ 12 июня 2018

Если вы хотите вызывать разные функции в разных случаях - лучше сделайте это с помощью sendMessage ()

После того, как вы загрузили script.js на текущую страницу сследующий background.js :

chrome.browserAction.onClicked.addListener(function(tab) {
    chrome.tabs.executeScript(null, {file: "script.js"});
});

Вы можете отправить сообщение вашему введенному script.js из background.js :

chrome.tabs.query({active: true, currentWindow: true}, function(tabs) 
{
    chrome.tabs.sendMessage(tabs[0].id, {'callFunction': 'makeChanges'});
    // OR
    chrome.tabs.sendMessage(tabs[0].id, {'callFunction': 'undoChanges'});
}

и внутри вашего script.js добавьте следующую логику:

chrome.extension.onMessage.addListener(function(request, sender, sendResponse) 
{ 
    if(request.callFunction === 'makeChanges')
        makeChanges();
    else
        undoChanges();
});
0 голосов
/ 11 июня 2018

Использовать всплывающее окно ...

Таким образом, когда пользователь нажимает на значок, вы можете отображать любые кнопки для действий.

расширение Chrome: действие браузера

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...