Доступ к переменной верхнего уровня фоновой страницы расширения Chrome - PullRequest
0 голосов
/ 08 ноября 2019

Итак, это мой фоновый скрипт:

background.js

const state = {
    inActivity = false
};

const setActivity = (payload, sender, callback) => {
    state.inActivity = payload.inActivity;
}

chrome.runtime.onMessage.addListener(function(payload, sender, callback) {
    if (payload.fn in this) {
        this[payload.fn](payload, sender, callback);
    }
});

То, что я пытаюсь сделать, пока безуспешно, - установить / изменить значение свойство inActivity (state.inActivity) путем отправки сообщений из моего скрипта содержимого, например так:

contentScript.js

chrome.runtime.sendMessage({
    fn: 'setActivity',
    inActivity: true
});

Однако я не смогчтобы выяснить сферу состояния или где она хранится, чтобы я мог сослаться на нее.

Пока this[setActivity] === undefined, window.setActivity === undefined и globalThis.setActivity === undefined.

Итак, вопросэто: как я могу вызвать setActivity или любую другую функцию, используя строковый параметр, переданный из моего скрипта содержимого?

Важно вызвать его изстрока this[payload.fn](...), переданная в качестве параметра в сообщении скрипта содержимого, потому что это будет не единственное доступное сообщение. Таким образом, у меня может быть один универсальный слушатель для всех методов.

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