我有一个镀铬自助服务终端应用程序,我需要在机器开启和关闭之间保存数据(几个字节作为字符串)。 但是,无论我尝试什么,localStorage似乎都会在重启时被抹掉。
当我转到chrome:// inspect / #apps来检查Chrome应用时,控制台中没有与LocalStorage相关的错误
在浏览器的Chrome中,我只会使用localStorage,但在使用Kiosk App时,这种情况不会持续存在。
代码示例:
window.localStorage.setItem(id, temp);
window.localStorage.getItem(id);
遵循以下建议: Persist data across single app kiosk mode executions 我有一个Chrome管理许可证,其中设置了以下设置,但这似乎没有任何区别(请参阅随附的JPG)
使用Kiosk App,我在manifest.json
中拥有存储权限我尝试过移动到chrome.storage,但是当我尝试执行此操作时出现未定义的错误。在Chrome应用程序和浏览器中运行时会出现此错误
我在这里尝试了解决方案,但它们不起作用。总是得到一个未定义的错误: https://groups.google.com/a/chromium.org/forum/#!topic/chromium-apps/_YcOT4PcdAQ
从评论中添加:代码:
chrome.storage.local.set({ 'key1': 'first', 'key2': 'second', 'key3': 'third', 'key4': 'fourth', 'key5': 'fifth' }, function() { console.debug('Settings saved'); });
<body class="trim full">
<form id="kiosk" model="AppConfig" view="KioskView">
<webview id="browser" src="link-to-my-website-which-calls-localstorage.com" style="width:100%; height:100%; position:absolute; top:0; left:0; right:0; bottom:0;"></webview>
</form>
</body>
答案 0 :(得分:8)
Chrome应用中有两种localStorage
上下文。
应用程序的代码本身。 localStorage
是disabled for Chrome App code。唯一的解决方案是使用chrome.storage
API。
localStorage
内 (您的情况) <webview>
。它默认设置为临时 。如果您希望它继续存在,则需要使用webview persistent partition。
如果存储分区ID以
persist:
(partition="persist:googlepluswidgets"
)开头,则webview将使用应用中具有相同存储分区ID的所有guest虚拟机可用的永久存储分区。如果未设置ID或没有'persist:'
前缀,则webview将使用内存存储分区。
<webview id="browser"
src="link-to-my-website-which-calls-localstorage.com"
style="width:100%; height:100%; position:absolute; top:0; left:0; right:0; bottom:0;"
partition="persist:browser">
</webview>
请注意,chrome.storage
API不会向webview内容公开(除非您注入脚本)。