1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
|
---
title: simple-storage
slug: Mozilla/Add-ons/SDK/High-Level_APIs/simple-storage
translation_of: Archive/Add-ons/Add-on_SDK/High-Level_APIs/simple-storage
---
<p>{{AddonSidebar}}</p>
<div class="note">
<p>Stable</p>
</div>
<p><span class="seoSummary">Permet au add-on le stockage des données afin qu'il soit conservé entre les redémarrages de Firefox. </span> Ce module fonctionne de façon similaire au <a href="https://developer.mozilla.org/en/DOM/Storage" title="https://developer.mozilla.org/en/DOM/Storage"> DOM Storage</a> du Web, mais il est uniquement disponible pour des add-ons.</p>
<h2 id="Utilisation">Utilisation</h2>
<p>Le module de stockage simple exporte un objet appelé <code>storage</code> qui est persistant et à porté de votre add-on. C'est un objet JavaScript normal, et vous pouvez le traiter comme vous le feriez pour tout autre.</p>
<p>Pour stocker une valeur, il faut juste l'affecter avec la propriété <code>storage</code>:</p>
<pre class="brush: js">var ss = require("sdk/simple-storage");
ss.storage.myArray = [1, 1, 2, 3, 5, 8, 13];
ss.storage.myBoolean = true;
ss.storage.myNull = null;
ss.storage.myNumber = 3.1337;
ss.storage.myObject = { a: "foo", b: { c: true }, d: null };
ss.storage.myString = "O frabjous day!";</pre>
<p>Vous pouvez stocker des valeurs tableau, booléennes, nombre, objet, null et des textes. Si vous souhaitez stocker d'autres types de valeurs, vous devrez d'abord les convertir en chaînes ou un autre de ces types.</p>
<p>Veillez à définir les propriétés avec <code>storage</code> et non avec le module lui-même:</p>
<pre class="brush: js">// This is not good!
var ss = require("sdk/simple-storage");
ss.foo = "I will not be saved! :(";</pre>
<h3 id="stockage_simple_et_jpm_run">stockage simple et "jpm run"</h3>
<p>Le module de stockage simple stocke ses données dans votre profil. Parce que <code>jpm run</code> utilise par défaut un profil frais chaque fois qu'il est exécuté, le stockage simple ne fonctionnera pas avec des add-ons exécutées en utilisant <code>jpm run</code> - les données stockées ne persisteront pas d'une exécution à l'autre.</p>
<p>La solution la plus simple à ce problème est d'utiliser l'option <a href="https://developer.mozilla.org/fr/Add-ons/SDK/Tools/jpm#Using_profiles_2">--profile de jpm</a> avec un chemin d'accès à un profil - pas seulement un nom de profil. Vous pouvez aussi avoir besoin d'inclure l'option<a href="https://developer.mozilla.org/fr/Add-ons/SDK/Tools/jpm#Using_profiles_2"> --no-copie</a> pour empêcher Firefox de copier le profil dans un répertoire de temporaire chaque fois qu'il démarre.</p>
<pre class="brush: bash">jpm run --no-copy --profile path/to/profile/dir</pre>
<p>Si vous spécifiez un profil non-existant, il sera créé.</p>
<blockquote>
<p>Important: Si vous utilisez cette méthode, vous devez mettre fin à votre session de débogage en quittant Firefox normalement, en annulant la commande shell. Si vous ne fermez pas Firefox normalement, puis un simple stockage ne sera pas informé que la session est terminée, et ne sera pas écrire vos données à la mémoire de sauvegarde.</p>
</blockquote>
<h3 id="Accès_au_stockage_à_partir_de_la_console">Accès au stockage à partir de la console</h3>
<p>Dans l'<a href="/fr/Add-ons/Add-on_Debugger" title="/fr/Add-ons/Add-on_Debugger"> Add-on Debugger </a>, vous pouvez accéder à vos addons simple stockage par programmation à partir de la console en utilisant ce qui suit:</p>
<pre class="brush: js">loader.modules['resource://gre/modules/commonjs/sdk/simple-storage.js'].exports.storage</pre>
<h3 id="Constructeur_de_tableaux">Constructeur de tableaux</h3>
<p>Pour ne pas remettre à zéro un tableau, attention au constructeur. Par exemple, cet add-on essaie de stocker les URL des pages visitées:</p>
<pre class="brush: js">var ss = require("sdk/simple-storage");
ss.storage.pages = [];
require("sdk/tabs").on("ready", function(tab) {
ss.storage.pages.push(tab.url);
});
require("sdk/ui/button/action").ActionButton({
id: "read",
label: "Read",
icon: "./read.png",
onClick: function() {
console.log(ss.storage.pages);
}
});</pre>
<p>Mais cela ne fonctonne pas, car il vide le tableau chaque fois que l'add-on est apellée (par exemple, chaque fois que Firefox est lancé). La ligne 2 a besoin d'être subordonné, de sorte que le tableau est uniquement construite si il n'existe pas déjà:</p>
<pre class="brush: js">if (!ss.storage.pages)
ss.storage.pages = [];</pre>
<h3 id="Suppression_de_données">Suppression de données</h3>
<p>Vous pouvez supprimer des propriétés en utilisant l'opérateur <code>delete</code>. Voici une add-on qui ajoute trois boutons pour écrire, lire et supprimer une valeur:</p>
<pre class="brush: js">var ss = require("sdk/simple-storage");
require("sdk/ui/button/action").ActionButton({
id: "write",
label: "Write",
icon: "./write.png",
onClick: function() {
ss.storage.value = 1;
console.log("Setting value");
}
});
require("sdk/ui/button/action").ActionButton({
id: "read",
label: "Read",
icon: "./read.png",
onClick: function() {
console.log(ss.storage.value);
}
});
require("sdk/ui/button/action").ActionButton({
id: "delete",
label: "Delete",
icon: "./delete.png",
onClick: function() {
delete ss.storage.value;
console.log("Deleting value");
}
});</pre>
<p>Si vous l'exécutez, vous verrez que si vous cliquez sur "Lire" après avoir cliqué sur "Supprimer" vous aurez le résultat escompté:</p>
<pre>info: undefined
</pre>
<p>Notez que pour exécuter cet add-on, vous aurez à enregistrer des fichiers icône nommées "write.png", "read.png", et "delete.png" dans le répertoire "data".</p>
<h3 id="Quotas">Quotas</h3>
<p>Le stockage simple à la disposition de votre add-on est limité. Actuellement, cette limite est environ cinq mégaoctets (5,242,880 octets). Vous pouvez choisir d'être averti lorsque vous dépassez le quota, et vous devez répondre en réduisant la quantité de données dans le stockage. Si vous quittez l'application pendant que vous êtes hors quota, toutes les données stockées depuis la dernière fois que vous étiez sous le quota ne sont pas conservées. Vous ne devriez pas laisser cela se produire.</p>
<p>Pour écouter les notifications du quota, utiliser l'evenement <code>"OverQuota"</code>. il sera appelée quand votre stockage dépasse le quota.</p>
<pre class="brush: js">function myOnOverQuotaListener() {
console.log("Uh oh.");
}
ss.on("OverQuota", myOnOverQuotaListener);</pre>
<p>Les auditeurs peuvent également être retirés:</p>
<pre><code><code class="brush: js">ss.removeListener("OverQuota", myOnOverQuotaListener);</code></code></pre>
<p>Pour connaitre le % de saturation du quota utiliser la proprieté <code>quotaUsage</code>. Si vous êtes dans votre quota, c'est un nombre entre 0 et 1. Si votre add-on utilise plus que son quota, cette valeur est supérieure à 1,0.</p>
<p>Par conséquent, lorsque vous êtes averti que vous êtes hors quota, vous devez répondre en supprimant les données de l'espace de stockage jusqu'à ce que votre <code>quotaUsage</code> soit inférieur ou égal à 1.</p>
<pre class="brush: js">ss.storage.myList = [ /* some long array */ ];
ss.on("OverQuota", function () {
while (ss.quotaUsage > 1)
ss.storage.myList.pop();
});</pre>
<h3 id="Navigation_privée">Navigation privée</h3>
<p>Si votre mémoire est liée à l'histoire de vos utilisateurs Web, des renseignements personnels, ou d'autres données sensibles, votre add-on devrait respecter la <a href="http://support.mozilla.com/fr/kb/Private+Browsing" title="http://support.mozilla.com/fr/kb/Private+Browsing"> navigation privé </a>.</p>
<p>Pour en savoir plus sur la façon de choisir en mode de navigation privée et comment utiliser le SDK pour éviter de stocker des données d'utilisateur associées aux fenêtres privées, reportez-vous à la documentation du <a href="/fr/Add-ons/SDK/High-Level_APIs/private-browsing" title="/fr/Add-ons/SDK/High-Level_APIs/private-browsing"> <code>private-browsing</code> Module </a> .</p>
<h2 id="Globals">Globals</h2>
<h3 id="Propriétés">Propriétés</h3>
<h4 class="addon-sdk-api-name" id="storage"><code>storage</code></h4>
<p>Un objet persistant privé de votre add-on.</p>
<h4 class="addon-sdk-api-name" id="quotaUsage"><code>quotaUsage</code></h4>
<p>Un certain nombre dans l'intervalle [0, Infinity) qui indique le pourcentage de quota occupé par le stockage. Une valeur dans l'intervalle [0, 1] indique que le stockage est dans le quota. Une valeur supérieure à 1 indique que le stockage dépasse le quota.</p>
<h3 id="Événements">Événements</h3>
<h4 class="addon-sdk-api-name" id="OverQuota"><code>OverQuota</code></h4>
<p>Le module émet cet événement lorsque votre stockage add-ons dépasse son quota.</p>
|