选中的复选框不适用于扩展程序Chrome

时间:2018-12-21 09:40:08

标签: javascript jquery html google-chrome google-chrome-extension

在扩展安装中,选中该复选框,但扩展名不起作用,扩展名开始工作后,用户单击扩展名图标,我希望扩展名无需单击扩展名图标即可开始工作,因为已选中此复选框,因此知道如何解决这个问题吗?

popup.html

<div class="Av-AutoChangeButton">Player</div> 
<div class="onoffswitch" style="margin: 0 auto;">
<input type="checkbox" class="PlayerCheckBox onoffswitch-checkbox" id="AvVidPlayer" checked/>
<label class="onoffswitch-label" for="AvVidPlayer">
    <span class="onoffswitch-inner"></span>
    <span class="onoffswitch-switch"></span>
</label>
</div>

popup.js

document.addEventListener('DOMContentLoaded', function() {
    if (window.location.href.match('chrome-extension://')) {
        load();
    }
});

$("body").on("change", ".PlayerCheckBox", function() {
    var status = "";
    $(".PlayerCheckBox").each(function() {
        status = status + ($(this).is(":checked")) + ",";
    });

    save_option(status);
});

function save_option(option) {
    var save = {};
    save[option] = null;
    chrome.storage.sync.set({
        option : option
    }, function() {
        console.log(option + "save");
    });
}

function load() {
    chrome.storage.sync.get(null, function(obj) {
        console.log(obj);
        if (obj.hasOwnProperty("option")) {
            tab = obj.option.split(",");

            console.log(tab);
            var l = 0;
            $(".PlayerCheckBox").each(function() {
                $(".PlayerCheckBox:eq(" + l + ")").prop("checked", parseBoolean(tab[l]));
                l++;
            });
        } else {
        save_option("true,true,true,true,true,true");
        }
    });

}

function parseBoolean(str) {
    return /true/i.test(str);
}

backgrund.js

chrome.runtime.onInstalled.addListener(function(tab) {
   chrome.storage.sync.set({state: 'on'});
});

我要运行此脚本redirect.js

    chrome.storage.sync.get(null, function(obj) {
        if (obj.hasOwnProperty("option")){
            tab = obj.option.split(",");
        if(tab[0]!=='false'){
            AvStreamStart(tab);
            }
        }
    });
function AvStreamStart(tab) {
/* my script here
} 

1 个答案:

答案 0 :(得分:1)

最简单的方法是将代码从redirect.js复制粘贴到background.js

但是,如果要模块化代码,可以在清单的“背景”字段下以“脚本”键后的数组形式列出这些脚本。

manifest.json

...
"background": {
    "scripts": [
         "redirect.js",
         "background.js"
    ]
}
...

另一种方法是将后台脚本注册为清单中的html页面,并在该html中包含所有需要的JS脚本。

manifest.json

...
"background": {
    "page": "background.html"
}
...
...

background.html

<script type="text/javascript" src="redirect.js"></script>

<script type="text/javascript" src="background.js"></script>