2015-11-25 19 views
6

Mam chromowaną aplikację Kiosk, w której muszę zapisywać dane (kilka bajtów jako ciąg) między włączaniem i wyłączaniem urządzenia. Ale co mogę spróbować, localStorage wydaje się być wyczyszczony przy ponownym uruchomieniu.Aplikacja Chrome localStorage nie działa, a chrome.storage nie działa

Kiedy idę do chrome: // skontrolować/# aplikacje do wglądu aplikację Chrome, nie ma pokrewnych błędy w konsoli odniesieniu do localStorage

w Chrome w przeglądarce, chciałbym po prostu używają localStorage ale ten nie występuje w aplikacji kiosku.

Przykład kodu:

window.localStorage.setItem(id, temp); 
window.localStorage.getItem(id); 

Idąc za radą tutaj: Persist data across single app kiosk mode executions mam licencji na zarządzanie Chrome z następującymi ustawieniami określonymi ale to nie wydaje się dokonały żadnej różnicy (patrz załączony JPG)

Dzięki aplikacji kiosku, mam pozwolenie przechowywania w manifest.json

próbowałem przeprowadzce do chrome.storage ale pojawia się niezdefiniowany błąd gdy e ver Próbuję to zrobić.Ten błąd występuje, gdy działa jako aplikacja Chrome, a w przeglądarce

Próbowałem rozwiązania tutaj, ale nie działają. Zawsze się niezdefiniowany błąd: https://groups.google.com/a/chromium.org/forum/#!topic/chromium-apps/_YcOT4PcdAQ

Chrome Management Settings


dodane komentarze: KOD:

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> 
+1

Po przesłaniu kodu używanego do 'chrome.storage' i dokładnego tekstu błędu. – wOxxOm

+0

@wOxxOm chrome.storage.local.Zestaw ({ \t 'klucz 1': 'pierwszy', \t 'klucz 2': 'sekunda' \t 'Key3' 'trzeci', \t 'KEY4': 'czwartego' \t 'key5': ' piąty " }, function() { \t \t console.debug (" Ustawienia zapisane "); \t }); error: TypeError: Nie można odczytać właściwości "local" z undefined – James

+0

Czy problem może wynikać z tego, że kod jest wywoływany z aplikacji Chrome przez przeglądarkę internetową? odnośnik //: KOD: -to-my-website-which-calls-localstorage.com "style =" width: 100%; height: 100%; position: absolute; top: 0; left: 0; right: 0; bottom: 0; "> James

Odpowiedz

7

Istnieją dwa konteksty dla localStorage w aplikacji Chrome.

  1. Sam kod aplikacji. localStorage to disabled for Chrome App code. Jedynym rozwiązaniem jest użycie interfejsu API chrome.storage.

  2. (Twój przypadek)localStorage wewnątrz <webview>. Został domyślnie ustawiony na . Jeśli chcesz, aby się utrzymywał, musisz użyć numeru webview persistent partition.

    If the storage partition ID starts with persist: (partition="persist:googlepluswidgets"), the webview will use a persistent storage partition available to all guests in the app with the same storage partition ID. If the ID is unset or if there is no 'persist:' prefix, the webview will use an in-memory storage partition.

    <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> 
    

    Należy pamiętać, że chrome.storage API nie będą narażone na Webview treści (chyba wstrzyknąć skrypt).

+0

Dodałem partition = "persistent: browser", ale localStorage nadal jest tracony po ponownym uruchomieniu. – James

+0

@Spencer To był literówka z mojej strony, powinno być 'persist', a nie' persistent'. Przeczytanie dokumentów, które połączyłem, rozwiąże to. – Xan

+0

zadziałało. Dzięki :) – James