Chrome扩展程序的后台页面顶级变量访问权限

时间:2019-11-08 17:18:20

标签: javascript google-chrome-extension scope javascript-objects

所以,这是我的背景脚本:

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)的值,如下所示:< / p>

contentScript.js

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

但是,我无法找出状态的范围或状态的存储位置,因此我可以对其进行引用。

到目前为止,this[setActivity] === undefinedwindow.setActivity === undefinedglobalThis.setActivity === undefined

因此,问题是:如何使用从内容脚本传递的字符串参数调用 setActivity 或任何其他函数?

从字符串this[payload.fn](...)(在内容脚本的消息中作为参数传递)中调用它很重要,因为它不是唯一可用的消息。这样,我可以为所有方法使用一个通用的侦听器。

0 个答案:

没有答案