0

Ich habe eine Chrome-Erweiterung mit Optionen, die über das Tag options_ui in manifest.json festgelegt werden. Ich kann Optionen speichern, aber ich bemerkte, dass die Optionen Modal für die chrome.storage.sync.set Funktion geschlossen werden müssen, um die Optionen zu speichern. Wie erzwinge ich das Speichern der Optionen beim Klicken auf "Speichern", auch wenn das Optionsmodal nicht geschlossen ist?Speichern von Chrome-Erweiterungsoptionen ohne Schließen von Optionen Modal

options.js:

function save_options() { 
    var hideAds = document.getElementById('hideAds').checked; 

    chrome.storage.sync.set({ 
     hideAds: hideAds 
    }, function() { 
    // Update status to let user know options were saved 
     var status = document.getElementById('status'); 
    status.textContent = 'Options successfully saved...'; 
    setTimeout(function() { 
     status.textContent = ''; 
    }, 1000); 
    }); 
} 

// Restores checkbox state using the preferences stored in chrome.storage. 
function restore_options() { 
    // Use default values 
    chrome.storage.sync.get({ 
     hideAds: false 
    }, function(items) { 
     document.getElementById('hideAds').checked = items.hideAds; 
    }); 
} 

document.addEventListener('DOMContentLoaded', restore_options); 
document.getElementById('save').addEventListener('click', save_options); 

manifest.json:

{ 
    "name": "Redesign", 
    "version": "1.0", 
    "manifest_version": 2, 
    "options_ui": { 
    "page": "options.html", 
    "chrome_style": true 
    } 
} 

EDIT: Hinzufügen background.js Code unten, dass nicht bekommen neuesten Optionen (nach auf die Schaltfläche Speichern klicken Options-Seite), sofern die Option modal nicht geschlossen ist. Die Zeile alert gibt den alten gespeicherten Optionswert und den neuen gespeicherten Wert erst aus, nachdem das Optionsmodal geschlossen wurde.

chrome.tabs.onUpdated.addListener(function(tabId, info, tab) { 
    if (info.status == 'complete') { 
      chrome.storage.sync.get(['hideAds'], function(items) { 

       if(typeof items.hideAds !== 'undefined') { 
        hideAds = items.hideAds; 
        alert(hideAds); 
       } 
      }) 
      doSomething(tab); 
     } 
}); 
+1

Warum denken Sie, Die Optionen werden erst gespeichert, wenn Sie das Modal schließen. –

+0

Der obige background.js-Code wurde hinzugefügt, der den alten Optionswert ausgibt, bis das modale Fenster der Optionen geschlossen wird. – zeeshan

Antwort

0

könnten Sie zu chrome.storage.onChanged Ereignisse im Hintergrund Seite hören, (Sie würden nie Speicherwert zu chrome.tabs.onUpdated für immer zu hören brauchen), die ausgelöst wird, wenn ein oder mehr Objekte ändern:

chrome.storage.onChanged.addListener(function(changes, areaName) { 
    if(areaName === 'sync') { 
     const hideAdsChange = changes['hideAds']; 
     if(typeof hideAdsChange !== 'undefined') { 
      const newValue = hideAdsChange.newValue; 
      console.log(newValue); 
     } 
    } 
}); 
Verwandte Themen