tl; dr:有关QUOTA_BYTES_PER_ITEM的同步错误,但我的项目很小,需要帮助找出问题所在。
所以我在Google Chrome扩展程序上收到此错误,我认为它没有多大意义,因为我要保存的内容不会超过400字节(序列化,大于在JSON字符串中相同),并且考虑QUOTA_BYTES_PER_ITEM
是4096
,它远非那个限制。
要么我在计算错误的东西(最有可能),要么我做错了什么(不太可能!)。
安装对此问题很重要的部分如下(CoffeeScript):
# Object: Default settings
defaultSettings =
type: 'single'
chars: 14
howmany: 1
security:
lowercase: true
uppercase: true
special: true
punctuation: true
readable: false
# Object: Current settings
paGenSettings = defaultSettings
# Function: Save Settings
saveSettings = (settings, notify) ->
if validateSettings settings, true
# Save settings using the Chrome extension storage API. Try sync, fallback to local
window.chrome.storage.sync.set { settings: settings }, () ->
if chrome.runtime.lastError && chrome.runtime.lastError.message && chrome.runtime.lastError.message.indexOf( 'MAX_WRITE_OPERATIONS_PER_HOUR' ) != -1
window.chrome.storage.local.set { settings: settings }, () ->
paGenSettings = settings
if notify
showNotification window.chrome.i18n.getMessage( 'settingsSaved' )
applySettings()
true
else
paGenSettings = settings
if notify
showNotification window.chrome.i18n.getMessage( 'settingsSaved' )
applySettings()
true
true
else
false
# Function: Get Settings
getSettings = () ->
# Get settings using the Chrome extension storage API. Try sync, fallback to local
window.chrome.storage.sync.get 'settings', (items) ->
if items.settings
settings = extend( paGenSettings, items.settings)
if validateSettings settings, false
paGenSettings = settings
applySettings()
true
else
window.chrome.storage.local.get 'settings', (items) ->
if items.settings
settings = extend( paGenSettings, items.settings)
if validateSettings settings, false
paGenSettings = settings
applySettings()
true
如果您检查它,当您保存设置或生成密码(也保存设置)时,您会看到弹出以下错误:
storage.set期间出错:超出了QUOTA_BYTES_PER_ITEM配额。
我已经让它回退到本地存储,但我真的希望它能同步这些设置。
所以,如果这不起作用,我将更改get / set代码,为每个设置使用不同的键/值,而不是对象,但我认为这没有多大意义,因为这个同步功能被宣传为支持对象(而且这个很小),所以我希望我做错了。
谢谢!
答案 0 :(得分:2)
所以我把它整理出来了。
主要问题是“无限循环”(n00b)我因 onChanged 侦听 chrome.storage ({{ 3}}),每次检测到更改时我都会保存设置。
我没有仔细阅读文档,并且认为这是为了“监听”设置的更改,例如,来自同步(但它会监听任何更改),因为我可以获取设置来自同步,我甚至不需要它。
删除该侦听器解决了问题。
据我所知,新版本的扩展程序(1.0.4)没有错误。