我目前正在制作Google Chrome扩展程序,在选项中,我希望用户能够选择它始终打开或仅在点击时激活。要做到这一点,我需要一个options.js和一个background.js文件,我有。但是,我在让他们正确沟通方面遇到了很多麻烦。我尝试使用chrome.storage api,但它不会做任何事情。
这是我的background.js代码:
chrome.browserAction.onClicked.addListener(function() {
// Send a message to the active tab
chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
chrome.tabs.sendMessage(tabs[0].id, {"message": tabs[0].url}, function(response));
});
});
chrome.tabs.onUpdated.addListener(function (tabId, changeInfo, tab) {
if (changeInfo.status == 'complete') {
chrome.tabs.query({active: true, currentWindow: true}, function(tabs){
// console.log(tabs.length);
chrome.tabs.sendMessage(tabs[0].id, {"message": tabs[0].url}, function(response) {});
});
}
});
这是我的options.js代码:
// Saves options to chrome.storage
function save_options() {
var behavior = document.getElementById('behavior').value;
chrome.storage.sync.set({
extensionBehavior: behavior
}, function() {
// Update status to let user know options were saved.
var status = document.getElementById('status');
status.textContent = 'Options saved!';
setTimeout(function() {
status.textContent = '';
}, 1000);
});
}
// Restores select box and checkbox state using the preferences
// stored in chrome.storage.
function restore_options() {
// Use default value color = 'red' and likesColor = true.
chrome.storage.sync.get({
extensionBehavior: 'onClick'
}, function(items) {
document.getElementById('behavior').value = items.extensionBehavior;
});
}
document.addEventListener('DOMContentLoaded', restore_options);
document.getElementById('save').addEventListener('click',
save_options);
如果行为设置为“onClick”,我只希望执行chrome.browserAction.onClicked.addListener
部分。如果行为设置为'alwaysOn',那么我只希望执行chrome.tabs.onUpdated.addListener
部分。就调试而言,这两个块都以他们应该的方式工作。我只需要知道如何根据当前选项运行一个或另一个。
答案 0 :(得分:0)
对于选项和背景之间的通信,当您选择localStorage在它们之间传递信息时,这将非常容易。 http://www.w3schools.com/html/html5_webstorage.asp