Итак, это мой фоновый скрипт:
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](...)
, переданная в качестве параметра в сообщении скрипта содержимого, потому что это будет не единственное доступное сообщение. Таким образом, у меня может быть один универсальный слушатель для всех методов.