2012-05-17 8 views
2

Je me demandais si je pouvais par hasard stocker plus d'une clé sur localStorage? Par exemple:Stockage de clés multiples de stockage local

localStorage.setItem("a_key", a_value); 
localStorage.setItem("another_key", another_value); 

Est-il possible de le faire? Si ce n'est pas ce que vous conseillez, je vais faire comme une solution de contournement que, parce que j'ai besoin d'avoir deux clés ou variables stockées sur le côté des clients?

+0

Oui, vous pouvez le faire. Mais pourquoi ne pas essayer? Utilisez simplement la console de débogage de votre navigateur. – ubik

+1

@PedroFerreira J'ai essayé une fois mais cela n'a pas fonctionné, peut-être que j'ai dû avoir une erreur :) – Roland

Répondre

3

Oui. Vous pouvez stocker plusieurs paires clé/valeur dans le stockage local (et le stockage de session). De l'web storage spec (italique ajouté):

Chaque objet de stockage permet d'accéder à une liste de paires clé/valeur, qui sont parfois appelés éléments. Les clés sont des chaînes. Toute chaîne (y compris la chaîne vide) est une clé valide. Les valeurs sont de même .

...

L'attribut de longueur doit renvoyer le nombre de paires clé/valeur actuellement présentes dans la liste associée à l'objet.

+0

Une question cependant, si je vais utiliser ce polyfill: https://gist.github.com/2597130, serai-je capable de stocker un abject et le récupérer le même? Parce que j'essaie de et quand je récupère l'objet, il cones un tableau de deux objets ... – Roland

+0

@Roland - Ce polyfill devrait fonctionner correctement. La méthode 'getItem' devrait renvoyer la valeur associée à la clé fournie. Le polyfill que j'ai tendance à utiliser est celui-ci (http://code.google.com/p/sessionstorage/), mais les deux doivent se comporter de la même manière. Notez que les polyfills pour le stockage Web ne sont pas parfaits ... ils ne déclenchent pas les événements de stockage que l'API native effectue. Si vous comptez sur ceux-ci, vous ne serez vraiment capable de supporter les navigateurs modernes. –

+0

Je vois, je sais que seuls les navigateurs modernes prennent en charge le stockage local, mais que polyfill retombe sur les cookies si le stockage n'est pas disponible. Eh bien, je sais que ça devrait se comporter de la même façon, mais je reçois toujours autre chose quand je récupère les données. Ce que je stocke est: 'var data = {current_page: 2, total_pages: 4}' et ce que je reçois est: '[object Object]', pourquoi cela arriverait-il? – Roland