Я разрабатываю расширение Google Chrome, в котором в основном есть два разных сценария содержимого для двух разных доменов (скажем, google.com и yahoo.com):
manifest.json
...
"content_scripts" : [{
"matches" : ["https://*google.com/*"],
"js": ["my_google.js"],
"run_at":"document_end"
}, {
"matches" : ["https://*yahoo.com/*"],
"js": ["my_yahoo.js"],
"run_at":"document_end"
}],
"permissions": ["storage"],
...
Мне нужно постоянное (не только для одного сеанса) хранилище, где оба этих скрипта могли бы обновлять и извлекать некоторые часто используемые данные. Я знаю, что это можно сделать с помощью chrome.storage API следующим образом:
chrome.storage.local.set( { 'string1' : 'value1'}, function(){
console.log("string1 with value = value1 has been added to the chrome.storage");
// continue with script code...
});
chrome.storage.local.get( 'string1', function (data){
console.log("string1 with value = " + data['string1'] + " has been retrieved from the chrome.storage" );
// continue with script code...
});
chrome.storage.local.remove( 'string1', function () {
console.log("string1 has been removed from chrome.storage") ;
// continue with script code...
});
Теперь самое смешное...
Есть ли замена этому API, которая будет работать как междоменное chrome.storage, но с синхронными вызовами? Чего я на самом деле пытаюсь добиться, так это воспроизвести поведение API-интерфейсов Scriptish/Greasemonkey GM_setValue и GM_getValue без необходимости изменять весь код обоих сценариев, ранее использовавшихся в Mozilla Firefox, а теперь перенесенных в Google Chrome.
необязательно:
также было бы неплохо иметь возможность удалить строку1 (или, возможно, очистить все хранилище) из всплывающей страницы значка действия браузера - popup.html (popup.js) .
Любые идеи?