我正在使用一个Chrome扩展程序,该扩展程序将数据存储在本地存储中。但是,当我从Chrome Play商店安装到其他系统时,它会要求打开同步功能。以下是我的清单。有趣的是,即使有人拒绝打开同步,它仍然可以工作。
{
"manifest_version": 2,
"name": "XX",
"description": ".....",
"version": "0.1",
"chrome_url_overrides": {
"newtab": "newtab.html"
},
"icons": {
"16": "icon_16.png",
"128": "icon_128.png",
"48": "icon_48.png"
},
"content_scripts": [
{
"matches": [
"http://*/*"
],
"css": [
"bootstrap.css"
],
"js": [
"jquery.js",
"bootstrap.js",
"custom.js"
],
"run_at": "document_end"
}
],
"background": {
},
"browser_action": {
"default_title": "..."
},
"permissions": [
"tabs",
"storage"
]
}
我怎么了?
更新 下面是与存储相关的代码
// Fetch last timestamp
chrome.storage.local.get('records_fetch_ts', function (date_rec) {
old_time = date_rec['records_fetch_ts'];
if(typeof old_time != 'undefined') {
current_time = new Date().getTime()
var timeinmilisec = current_time - old_time;
days = Math.floor(timeinmilisec / (1000 * 60 * 60 * 24));
}
});
chrome.storage.local.get('records', function (result) {
records = result;
//records = null;
if (!$.isEmptyObject(records))
entries = JSON.parse(result['records'])
// Preparation of Random result
if (entries.length > 0)
itemsLength = entries.length;
if (itemsLength > 0)
random_number = Math.floor((Math.random() * itemsLength) + 1);
single_item = entries[random_number];
console.log(single_item);
if (single_item != null)
$('#asin').html(single_item['asin'])
updateUI(single_item)
console.log(days)
//if (records == null && days > 10) {
if ((days < 0 || days > 10) || records == null) {
console.log('Fetch me dude');
fetchData();
}
});
答案 0 :(得分:1)
1)请注意,即使禁用了同步,chrome.storage.sync
也可以工作-它的行为类似于local
(限制除外)。因此,人们始终可以使用sync
而不用担心它是否由用户启用。
2)无论扩展名是否完全使用storage
,浏览器都将要求打开同步。请注意以下措辞:
“扩展程序同步”子选项的用途不仅是storage.sync
,而且:
如果您感到好奇,可以查看chrome://sync-internals/
的“同步节点浏览器”以查看数据。注意“扩展”和“扩展设置”集合之间的区别。
在这种情况下,提示提示“如果您希望在浏览器的所有实例中都安装此软件,请打开同步”,这是正常现象。