Chrome 扩展程序显示启用/禁用扩展程序的切换

Kou*_*sha 1 html javascript google-chrome-extension

这是我的清单

{
    "name": "my-extension",
    "version": "0.0.9",
    "manifest_version": 2,
    "icons": {
        "16": "img/icon16.png",
    },
    "browser_action": {
        "default_icon": "img/icon16.png",
        "default_popup": "html/popup.html"
    },
    "web_accessible_resources": [
        "data/links.json"
    ],
    "content_scripts": [...],
    "background": {
        "scripts": [
            "js/background.js"
        ]
    },
    "permissions": [
        "tabs",
    ]
}
Run Code Online (Sandbox Code Playgroud)

我想要一个切换开关,html/popup.html这样当用户点击它时,我可以存储一些布尔值来知道我的扩展是启用还是禁用。然后在content_scripts我可以使用这个布尔值来知道是否执行任务。

到目前为止,我有一个基本的 html/popup.html

<!DOCTYPE html>
<html lang="en">
<head>
</head>

<body id="popup">
    <button>
        <!-- Somehow add a text on/off here based on the state -->
    </button>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

Ivá*_*oko 5

您可以使用chrome.storageAPI来同步弹出窗口和内容脚本之间的信息。例如:

弹出窗口.html

<body>
    <button id="toggle"></button>
    <script src="popup.js"></script>
</body>
Run Code Online (Sandbox Code Playgroud)

弹出窗口.js

var enabled = false; //disabled by default
var myButton = document.getElementById('toggle');

chrome.storage.local.get('enabled', data => {
    enabled = !!data.enabled;
    myButton.textContent = enabled ? 'Disable' : 'Enable';
});

myButton.onclick = () => {
    enabled = !enabled;
    myButton.textContent = enabled ? 'Disable' : 'Enable';
    chrome.storage.local.set({enabled:enabled});
};
Run Code Online (Sandbox Code Playgroud)

content_script.js

chrome.storage.local.get('enabled', data => {
    if (data.enabled) {
        //it is enabled, do accordingly
    } else {
        //it is disabled
    }
});
Run Code Online (Sandbox Code Playgroud)