Chrome App localStorage无法持久存在且chrome.storage无法正常工作

Jam*_*mes 7 javascript webview local-storage google-chrome-app

我有一个镀铬自助服务终端应用程序,我需要在机器开启和关闭之间保存数据(几个字节作为字符串).但是,无论我尝试什么,localStorage似乎在重新启动时被删除.

当我转到chrome:// inspect/#apps来检查Chrome应用程序时,控制台中没有关于LocalStorage的相关错误

在浏览器的Chrome中,我只会使用localStorage,但在Kiosk App中不会保留.

代码示例:

window.localStorage.setItem(id, temp);
window.localStorage.getItem(id);
Run Code Online (Sandbox Code Playgroud)

遵循以下建议: 在单个应用程序自助终端模式执行中保留数据 我有一个Chrome管理许可证,其中设置了以下设置,但这似乎没有任何区别(请参阅附件JPG)

使用Kiosk App,我在manifest.json中拥有存储权限

我尝试过移动到chrome.storage但是当我尝试执行此操作时出现未定义的错误.运行Chrome应用程序和浏览器时出现此错误

我在这里尝试了解决方案,但它们不起作用.始终收到未定义的错误:https://groups.google.com/a/chromium.org/forum/#!topic / chrome-apps / _YcOT4PcdAQ

Chrome管理设置


添加评论:代码:

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>
Run Code Online (Sandbox Code Playgroud)

Xan*_*Xan 9

localStorageChrome应用中有两种情况.

  1. 应用程序的代码本身.localStorage停用 Chrome应用代码.唯一的解决方案是使用chrome.storageAPI.

  2. (你的情况) localStorage里面<webview>.它默认设计为临时.如果您希望它保持不变,则需要使用 webview持久分区.

    如果存储分区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>
    
    Run Code Online (Sandbox Code Playgroud)

    请注意,chrome.storageAPI不会暴露给webview内容(除非您注入脚本).