如何根据options.js让background.js改变

时间:2016-05-31 17:22:28

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

我目前正在制作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部分。就调试而言,这两个块都以他们应该的方式工作。我只需要知道如何根据当前选项运行一个或另一个。

1 个答案:

答案 0 :(得分:0)

对于选项和背景之间的通信,当您选择localStorage在它们之间传递信息时,这将非常容易。 http://www.w3schools.com/html/html5_webstorage.asp