我即将完成扩展程序,我需要的是我的popup.html中的一个开/关开关,它将控制'chrome:// extensions'标签中的相同开关。可能吗?
这就是我所做的:popup.html:
// on/off switch
<div class="center custom-control custom-switch">
<input type="checkbox" class="custom-control-input" id="customSwitch1">
<label class="custom-control-label" for="customSwitch1">PAUSE / START</label>
</div>
popup.js:
var ss = document.getElementById("customSwitch1");
$(ss).click(function() {
if($(ss).prop("checked")){
chrome.runtime.sendMessage({isOn: "true"}, function(response) {
console.log(response.farewell);
});
}
else{
chrome.runtime.sendMessage({isOn: "false"}, function(response) {
console.log(response.state);
});
}
});
background.js:
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
console.log(sender.tab ?
"from a content script:" + sender.tab.url :
"from the extension");
if (request.isOn == "true")
sendResponse({state: "true"});
if (request.isOn == "false")
sendResponse({state: "false"});
});
您可以在Chrome中启用扩展程序,并让弹出窗口控制扩展程序正在处理的暂停/开始,而不是禁用整个扩展程序。
您可以从代码中禁用自己的扩展。实际上,您甚至可以卸载它。
请参阅chrome.management
API了解如何操作。
但是,这将使您无法启用它。
"management"
权限才能影响其他扩展程序。/* Pseudocode */
function someEventHandler() {
if (state.enabled) {
// Do stuff
} else {
console.log("Functionality disabled, ignoring SomeEvent");
}
}
请注意,要保留此设置,您可能希望将其保存在扩展重启后的某个位置; chrome.storage
API可能是你最好的选择。