2012-05-28 28 views
7

Uzantının kullanım ömrü boyunca (örneğin, kullanıcı tarayıcıyı kapatana kadar kullanmaya başladığından beri) bazı bilgileri (özellikle bilgi sekmesi) kaydetmesi gereken bir Chrome uzantısı üzerinde çalışıyorum.Chrome Uzantısı Verileri Kaydetme

Bir seçenek localstorage kullanmaktır, ancak localstorage sadece Strings'i kaydedebilir ve bu da benim için çok rahatsız edici olur (çünkü kaydetmek için bir sürü veriim olduğu için - tarihler, URL'ler, tamsayılar vb.). Aradığım şey, uzantının süresi boyunca yaşayacağım kendi javascript nesnelerini kullanmak.
Sorun şu ki, bazı javascript dosyalarındaki bu nesneleri bir komut dosyasında tanımlamak, kullanıcının tarayıcı eylemini her tıkladığında onları silecektir. Başka bir deyişle, bir javascript dosyası içeren (benim nesnelerimi kaydetmek istediğim) popup.html adlı bir tarayıcı eylemim var ve kullanıcının tarayıcı eylemini tıklattığı her seferinde JS dosyasında tanımladığım tüm nesneler kaybolur. Her şeyin ısrarlı olmasını istiyorum.

Tarayıcı eylemi üzerindeki birçok tıklama ile devam eden ve bu durumun yerel öğesi DEĞİLDİR?

+1

Geçerli oturum için verileri (tarayıcı kapanana kadar) hatırlamak ister misiniz? Bu durumda, sadece [background page] içindeki nesneleri oluşturun (https://code.google.com/chrome/extensions/background_pages.html). –

+0

veya [indexedDB] kullanabilirsiniz (https://developer.mozilla.org/en/IndexedDB/Using_IndexedDB) – gengkev

+0

Bu günlerde chrome.storage kullanarak otomatik olarak FWIW serileştirir/seri hale getirir: http://stackoverflow.com/ a/24281357/32453 – rogerdpack

cevap

2

localStorage'ı kullanmalısınız (JSON.stringify ve JSON.parse'ı kullanabilirsiniz). Eğer gerçekten localStorage ne de bir sunucu tarafı depolama kullanmanın istemiyorsanız

, IndexedDB kullanın: https://developer.mozilla.org/en/IndexedDB/Using_IndexedDB

+0

Başka seçenek yoksa, localStorage uygulamasına geri döneceğim. Sorunumu çözmek için bir arka plan sayfasının kullanılabilir mi? Kılavuzlardan neler yaptıklarını tam olarak anlayamıyorum ... –

+0

Bir arka plan sayfası kullanabilirsiniz, ancak muhtemelen gerekli değildir. Dahili numaranızdaki herhangi bir betik localStorage'dan okuyabilir ve yazabilir. –

2

Filesystem API 'ın kalıcı depolama kullanmayı deneyin. Bu, localStorage'dan daha güvenilirdir. Kullanıcı önbelleği, çerezleri temizledikten sonra localStorage temizlenecektir. Dosya sistemi daha güvenilirdir.

+2

Kullanıcı çerezleri açık bir şekilde silmese bile veriyi devam ettirmek neden iyi bir fikirdir? Bir kullanıcı bu davranışı ister misiniz? Bu özellikle, @Joel_Blum'un sadece kullanıcının oturumu sırasında devam eden bir şey sorması nedeniyle gariptir. – steinar

+0

Ne yazık ki, FileSystem API'sı Chrome'dan başka tarayıcılar tarafından benimsenmedi ve temel olarak LocalStorage tarafından "değiştirildi" şeklinde görünüyor. – rogerdpack

0

chrome.storage kullanımı hakkındaki bu yanıt benim için diğerlerinden çok daha iyi çalıştı.

https://stackoverflow.com/a/14009240/766115

Bu localStorage gibi, ama pop-up/arka plan ve içerik komut arasında çalışır.

İlgili konular