ब्यौरा
उपयोगकर्ता के डेटा को सेव करने, वापस पाने, और उसमें किए गए बदलावों को ट्रैक करने के लिए, chrome.storage
एपीआई का इस्तेमाल करें.
अनुमतियां
storage
खास जानकारी
Storage API, एक्सटेंशन के हिसाब से खास तरीका उपलब्ध कराता है, ताकि उपयोगकर्ता का डेटा और स्थिति को बनाए रखा जा सके. यह वेब प्लैटफ़ॉर्म के स्टोरेज एपीआई (IndexedDB और Storage) के जैसा है, लेकिन इसे एक्सटेंशन की स्टोरेज से जुड़ी ज़रूरतों को पूरा करने के लिए डिज़ाइन किया गया. ये कुछ मुख्य सुविधाएं हैं:
- एक्सटेंशन सर्विस वर्कर और कॉन्टेंट स्क्रिप्ट के साथ-साथ सभी एक्सटेंशन कॉन्टेक्स्ट के पास Storage API का ऐक्सेस होता है.
- क्रम से लगाई जा सकने वाली JSON वैल्यू को, ऑब्जेक्ट प्रॉपर्टी के तौर पर सेव किया जाता है.
- बल्क रीड और राइट ऑपरेशन के साथ Storage API एसिंक्रोनस होता है.
- भले ही उपयोगकर्ता कैश मेमोरी और ब्राउज़िंग इतिहास साफ़ कर दे, लेकिन डेटा बना रहता है.
- सेव की गई सेटिंग तब भी सेव रहती हैं, जब स्प्लिट गुप्त मोड का इस्तेमाल किया जा रहा हो.
- एंटरप्राइज़ नीतियों के लिए, मैनेज किए जा रहे स्टोरेज की खास जगह को सिर्फ़ पढ़ने के लिए उपलब्ध कराया जाता है.
हालांकि, एक्सटेंशन कुछ कॉन्टेक्स्ट (पॉप-अप और दूसरे एचटीएमएल पेज) में [Storage
][mdn-storage] इंटरफ़ेस (window.localStorage
से ऐक्सेस किया जा सकने वाला) का इस्तेमाल कर सकते हैं, लेकिन इन वजहों से इसका सुझाव नहीं दिया जाता:
- एक्सटेंशन का सर्विस वर्कर,
Storage
को ऐक्सेस नहीं कर सकता. - कॉन्टेंट स्क्रिप्ट, होस्ट पेज के साथ स्टोरेज शेयर करती हैं.
- उपयोगकर्ता के अपना ब्राउज़िंग इतिहास मिटाने पर,
Storage
इंटरफ़ेस का इस्तेमाल करके सेव किया गया डेटा मिट जाता है.
सर्विस वर्कर से, डेटा को वेब स्टोरेज एपीआई से एक्सटेंशन स्टोरेज एपीआई में ले जाने के लिए:
- कन्वर्ज़न रूटीन और [
onMessage
][मैसेज पर] हैंडलर के साथ एक ऑफ़स्क्रीन दस्तावेज़ बनाएं. - कन्वर्ज़न रूटीन को ऑफ़स्क्रीन दस्तावेज़ में जोड़ें.
- एक्सटेंशन सर्विस वर्कर में, अपने डेटा के लिए
chrome.storage
की जांच करें. - अगर आपका डेटा नहीं मिलता है, तो एक ऑफ़स्क्रीन दस्तावेज़ [बनाएं][create-offscreen] पर सेट करें और कन्वर्ज़न रूटीन शुरू करने के लिए [
sendMessage()
][send-message] को कॉल करें. - ऑफ़स्क्रीन दस्तावेज़ के
onMessage
हैंडलर के अंदर, कन्वर्ज़न रूटीन को कॉल करें.
एक्सटेंशन में वेब स्टोरेज एपीआई के काम करने के तरीके में भी कुछ मामूली अंतर हैं. ज़्यादा जानकारी के लिए इस लिंक पर जाएं [स्टोरेज और कुकी][स्टोरेज और कुकी] लेख.
स्टोरेज की जगहें
Storage API को इन चार बकेट ("स्टोरेज एरिया") में बांटा गया है:
storage.local
- डेटा को डिवाइस पर सेव किया जाता है. एक्सटेंशन को हटाए जाने पर, डेटा मिटा दिया जाता है. कोटा करीब 10 एमबी का है, लेकिन
"unlimitedStorage"
की अनुमति का अनुरोध करके इसे बढ़ाया जा सकता है. ज़्यादा डेटा सेव करने के लिए, इसका इस्तेमाल करें.
storage.sync
- सिंक करने की सुविधा चालू होने पर, डेटा को ऐसे किसी भी Chrome ब्राउज़र में सिंक किया जाता है जिसमें उपयोगकर्ता ने लॉग इन किया हुआ है. बंद होने पर, यह
storage.local
की तरह काम करती है. ब्राउज़र के ऑफ़लाइन होने पर Chrome, डेटा को स्थानीय तौर पर सेव करता है. साथ ही, वापस ऑनलाइन आने पर, सिंक करने की प्रोसेस फिर से शुरू कर देता है. कोटा की सीमा करीब 100 केबी, हर आइटम के लिए 8 केबी की है. सिंक किए गए सभी ब्राउज़र में उपयोगकर्ता सेटिंग को बनाए रखने के लिए इसका इस्तेमाल करें.
- storage.session
- ब्राउज़र सेशन के दौरान डेटा को मेमोरी में होल्ड करता है. डिफ़ॉल्ट रूप से, इस पर कॉन्टेंट स्क्रिप्ट नहीं दिखती हैं. हालांकि,
chrome.storage.session.setAccessLevel()
को सेट करके इस सेटिंग को बदला जा सकता है. कोटा की सीमा करीब 10 एमबी है. सर्विस वर्कर के रनों में ग्लोबल वैरिएबल को स्टोर करने के लिए, इसका इस्तेमाल करें.
- storage.managed
- एडमिन, मैनेज किए जा रहे एनवायरमेंट में सहायक एक्सटेंशन की सेटिंग कॉन्फ़िगर करने के लिए, स्कीमा और एंटरप्राइज़ नीतियों का इस्तेमाल कर सकते हैं. डिवाइस के स्टोरेज की इस जगह को सिर्फ़ पढ़ा जा सकता है.
मेनिफ़ेस्ट
Storage API का इस्तेमाल करने के लिए, एक्सटेंशन में "storage"
अनुमति का एलान करें
मेनिफ़ेस्ट दिखेगा. उदाहरण के लिए:
{
"name": "My extension",
...
"permissions": [
"storage"
],
...
}
इस्तेमाल
ये सैंपल local
, sync
, और
session
स्टोरेज एरिया:
storage.local
chrome.storage.local.set({ key: value }).then(() => {
console.log("Value is set");
});
chrome.storage.local.get(["key"]).then((result) => {
console.log("Value currently is " + result.key);
});
storage.sync
chrome.storage.sync.set({ key: value }).then(() => {
console.log("Value is set");
});
chrome.storage.sync.get(["key"]).then((result) => {
console.log("Value currently is " + result.key);
});
storage.session
chrome.storage.session.set({ key: value }).then(() => {
console.log("Value was set");
});
chrome.storage.session.get(["key"]).then((result) => {
console.log("Value currently is " + result.key);
});
managed
के स्टोरेज की जगह के बारे में ज़्यादा जानने के लिए, स्टोरेज की जगहों के लिए मेनिफ़ेस्ट देखें.
स्टोरेज और थ्रॉटलिंग की सीमाएं
Storage API में कुछ जोड़ने का मतलब यह न हो कि चीज़ों को किसी बड़े ट्रक में डाल दिया जाता है. YouTube Studio में एक पाइप में कुछ रखने जैसा है. पाइप में पहले से कोई सामग्री हो सकती है और वह जानकारी भी भरी जा सकती है. मान लें कि स्टोरेज में जोड़ने और असल में उपलब्ध होने के बीच देरी हुई है रिकॉर्ड किया गया.
स्टोरेज एरिया की सीमाओं के बारे में जानने के लिए और तय करें कि सीमा पार होने पर क्या होता है, sync
, local
, और session
के लिए कोटा की जानकारी देखें.
उपयोग के उदाहरण
नीचे दिए गए सेक्शन में, Storage API के इस्तेमाल के सामान्य उदाहरण दिए गए हैं.
स्टोरेज से जुड़े अपडेट के लिए सिंक्रोनस रिस्पॉन्स
स्टोरेज में किए गए बदलावों को ट्रैक करने के लिए, आपके पास onChanged
इवेंट में लिसनर जोड़ने का विकल्प है. जब स्टोरेज में कुछ भी बदलाव होता है, तो वह इवेंट ट्रिगर हो जाता है. सैंपल कोड, इन बदलावों को ध्यान में रखता है:
background.js:
chrome.storage.onChanged.addListener((changes, namespace) => {
for (let [key, { oldValue, newValue }] of Object.entries(changes)) {
console.log(
`Storage key "${key}" in namespace "${namespace}" changed.`,
`Old value was "${oldValue}", new value is "${newValue}".`
);
}
});
हम इस आइडिया पर और काम कर सकते हैं. इस उदाहरण में, हमारे पास एक विकल्प पेज है, जो
उपयोगकर्ता को "डीबग मोड" टॉगल करने की अनुमति देता है (लागू करने की जानकारी यहां नहीं दिखाई गई है). विकल्प पेज नई सेटिंग को तुरंत storage.sync
में सेव कर देता है और सर्विस वर्कर जल्द से जल्द सेटिंग लागू करने के लिए storage.onChanged
का इस्तेमाल करता है.
options.html:
<!-- type="module" allows you to use top level await -->
<script defer src="options.js" type="module"></script>
<form id="optionsForm">
<label for="debug">
<input type="checkbox" name="debug" id="debug">
Enable debug mode
</label>
</form>
options.js:
// In-page cache of the user's options
const options = {};
const optionsForm = document.getElementById("optionsForm");
// Immediately persist options changes
optionsForm.debug.addEventListener("change", (event) => {
options.debug = event.target.checked;
chrome.storage.sync.set({ options });
});
// Initialize the form with the user's option settings
const data = await chrome.storage.sync.get("options");
Object.assign(options, data.options);
optionsForm.debug.checked = Boolean(options.debug);
background.js:
function setDebugMode() { /* ... */ }
// Watch for changes to the user's options & apply them
chrome.storage.onChanged.addListener((changes, area) => {
if (area === 'sync' && changes.options?.newValue) {
const debugMode = Boolean(changes.options.newValue.debug);
console.log('enable debug mode?', debugMode);
setDebugMode(debugMode);
}
});
स्टोरेज से एसिंक्रोनस प्रीलोड
सर्विस वर्कर हमेशा नहीं चलते, इसलिए मेनिफ़ेस्ट V3 एक्सटेंशन को कभी-कभी
इससे पहले कि वे अपने इवेंट हैंडलर एक्ज़ीक्यूट करें, स्टोरेज से डेटा एसिंक्रोनस रूप से लोड हो जाता है. ऐसा करने के लिए,
निम्न स्निपेट एक एसिंक action.onClicked
इवेंट हैंडलर का उपयोग करता है जो storageCache
की इंतज़ार करता है
दुनिया भर में, इसके लॉजिक को लागू करने से पहले पॉप्युलेट किया जाएगा.
background.js:
// Where we will expose all the data we retrieve from storage.sync.
const storageCache = { count: 0 };
// Asynchronously retrieve data from storage.sync, then cache it.
const initStorageCache = chrome.storage.sync.get().then((items) => {
// Copy the data retrieved from storage into storageCache.
Object.assign(storageCache, items);
});
chrome.action.onClicked.addListener(async (tab) => {
try {
await initStorageCache;
} catch (e) {
// Handle error that occurred during storage initialization.
}
// Normal action handler logic.
storageCache.count++;
storageCache.lastTabId = tab.id;
chrome.storage.sync.set(storageCache);
});
एक्सटेंशन के उदाहरण
Storage API के अन्य डेमो देखने के लिए, इनमें से कोई भी उदाहरण देखें:
टाइप
AccessLevel
स्टोरेज की जगह का ऐक्सेस लेवल.
Enum
"TRUSTED_contextS"
एक्सटेंशन से शुरू होने वाले संदर्भों के बारे में भी बताता है.
"TRUSTED_AND_UNTRUSTED_CONTEXTS"
एक्सटेंशन के बाहर से आने वाले संदर्भ के बारे में बताता है.
StorageArea
प्रॉपर्टी
-
onChanged
इवेंट<Functionvoid>
Chrome 73 और उसके बाद के वर्शनएक या उससे ज़्यादा आइटम में बदलाव होने पर ट्रिगर होता है.
onChanged.addListener
फ़ंक्शन इस तरह दिखता है:(callback: function) => {...}
-
कॉलबैक
फ़ंक्शन
callback
पैरामीटर ऐसा दिखता है:(changes: object) => void
-
बदलाव
ऑब्जेक्ट
-
-
-
मिटाएं
अमान्य
प्रॉमिसडिवाइस के स्टोरेज से सभी आइटम हटा दिए जाते हैं.
clear
फ़ंक्शन इस तरह दिखता है:(callback?: function) => {...}
-
कॉलबैक
फ़ंक्शन वैकल्पिक
callback
पैरामीटर ऐसा दिखता है:() => void
-
returns
प्रॉमिस<void>
Chrome 88 और उसके बाद के वर्शनप्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और उसके बाद के वर्शन पर काम करता है. दूसरे प्लैटफ़ॉर्म को कॉलबैक इस्तेमाल करने होते हैं.
-
-
रिवॉर्ड पाएँ
अमान्य
प्रॉमिसस्टोरेज से एक या उससे ज़्यादा आइटम लेता है.
get
फ़ंक्शन इस तरह दिखता है:(keys?: string | string[] | object, callback?: function) => {...}
-
बटन
string | string[] | ऑब्जेक्ट ज़रूरी नहीं
पाने के लिए एक कुंजी, पाने के लिए कुंजियों की सूची या डिफ़ॉल्ट वैल्यू बताने वाली डिक्शनरी (ऑब्जेक्ट का ब्यौरा देखें). खाली सूची या ऑब्जेक्ट दिखाने पर, नतीजे के तौर पर कोई ऑब्जेक्ट नहीं दिखेगा. स्टोरेज का पूरा कॉन्टेंट पाने के लिए,
null
पास करें. -
कॉलबैक
फ़ंक्शन वैकल्पिक
callback
पैरामीटर ऐसा दिखता है:(items: object) => void
-
आइटम
ऑब्जेक्ट
ऑब्जेक्ट के साथ, की-वैल्यू मैपिंग में मौजूद आइटम.
-
-
returns
Promise<object>
Chrome 88 और उसके बाद के वर्शनप्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और उसके बाद के वर्शन पर काम करता है. दूसरे प्लैटफ़ॉर्म को कॉलबैक इस्तेमाल करने होते हैं.
-
-
getBytesInUse
अमान्य
प्रॉमिसएक या ज़्यादा आइटम के लिए इस्तेमाल की जा रही जगह (बाइट में) की जानकारी देता है.
getBytesInUse
फ़ंक्शन इस तरह दिखता है:(keys?: string | string[], callback?: function) => {...}
-
बटन
string | स्ट्रिंग[] ज़रूरी नहीं
कुल इस्तेमाल के बारे में जानने के लिए, कोई एक बटन या कुंजियों की सूची. खाली सूची में 0 दिखेगा. पूरे स्टोरेज का इस्तेमाल करने के लिए,
null
पास करें. -
कॉलबैक
फ़ंक्शन वैकल्पिक
callback
पैरामीटर ऐसा दिखता है:(bytesInUse: number) => void
-
bytesInUse
संख्या
स्टोरेज में इस्तेमाल की जा रही जगह की जानकारी (बाइट में).
-
-
returns
Promise<number>
Chrome 88 और उसके बाद के वर्शनप्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और उसके बाद के वर्शन पर काम करता है. दूसरे प्लैटफ़ॉर्म को कॉलबैक इस्तेमाल करने होते हैं.
-
-
'GetKeys'
अमान्य
प्रॉमिस मंज़ूरी बाकी हैस्टोरेज से सभी कुंजियां इस्तेमाल की जा सकती हैं.
getKeys
फ़ंक्शन इस तरह दिखता है:(callback?: function) => {...}
-
कॉलबैक
फ़ंक्शन वैकल्पिक
callback
पैरामीटर ऐसा दिखता है:(keys: string[]) => void
-
बटन
स्ट्रिंग[]
स्टोरेज से पढ़ी गई कुंजियों की कलेक्शन.
-
-
returns
Promise<string[]>
प्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और उसके बाद के वर्शन पर काम करता है. दूसरे प्लैटफ़ॉर्म को कॉलबैक इस्तेमाल करने होते हैं.
-
-
कॉन्टेंट हटाना
अमान्य
प्रॉमिसस्टोरेज से एक या उससे ज़्यादा आइटम हट जाते हैं.
remove
फ़ंक्शन इस तरह दिखता है:(keys: string | string[], callback?: function) => {...}
-
बटन
string | स्ट्रिंग[]
हटाए जाने वाले आइटम के लिए कोई एक कुंजी या कुंजियों की सूची.
-
कॉलबैक
फ़ंक्शन वैकल्पिक
callback
पैरामीटर ऐसा दिखता है:() => void
-
returns
प्रॉमिस<void>
Chrome 88 और उसके बाद के वर्शनप्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और उसके बाद के वर्शन पर काम करता है. दूसरे प्लैटफ़ॉर्म को कॉलबैक इस्तेमाल करने होते हैं.
-
-
सेट करो
अमान्य
प्रॉमिसकई आइटम सेट करता है.
set
फ़ंक्शन इस तरह दिखता है:(items: object, callback?: function) => {...}
-
आइटम
ऑब्जेक्ट
एक ऐसा ऑब्जेक्ट जो स्टोरेज को अपडेट करने के लिए, हर कुंजी/वैल्यू पेयर को देता है. स्टोरेज में मौजूद किसी भी अन्य कुंजी/वैल्यू पेयर पर कोई असर नहीं पड़ेगा.
प्रिमिटिव वैल्यू, जैसे कि नंबर, उम्मीद के मुताबिक क्रम में होंगे.
typeof
"object"
और"function"
वाली वैल्यू, आम तौर पर{}
के लिए सीरियल होती हैं. हालांकि,Array
(उम्मीद के मुताबिक क्रम से लगाई जाती हैं),Date
औरRegex
को अलग से क्रम में लगाया जाता है (इन वैल्यू के हिसाब से ये क्रम तय किए जाते हैं).String
-
कॉलबैक
फ़ंक्शन वैकल्पिक
callback
पैरामीटर ऐसा दिखता है:() => void
-
returns
प्रॉमिस<void>
Chrome 88 और उसके बाद के वर्शनप्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और उसके बाद के वर्शन पर काम करता है. दूसरे प्लैटफ़ॉर्म को कॉलबैक इस्तेमाल करने होते हैं.
-
-
setAccessLevel
अमान्य
प्रॉमिस Chrome 102 और उसके बाद वाले वर्शन के लिएइससे स्टोरेज एरिया के लिए, अपने हिसाब से ऐक्सेस लेवल सेट किया जा सकता है. डिफ़ॉल्ट तौर पर, सिर्फ़ भरोसेमंद कॉन्टेक्स्ट होगा.
setAccessLevel
फ़ंक्शन इस तरह दिखता है:(accessOptions: object, callback?: function) => {...}
-
accessOptions
ऑब्जेक्ट
-
accessLevel
स्टोरेज एरिया का ऐक्सेस लेवल.
-
-
कॉलबैक
फ़ंक्शन वैकल्पिक
callback
पैरामीटर ऐसा दिखता है:() => void
-
returns
प्रॉमिस<void>
प्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और उसके बाद के वर्शन पर काम करता है. दूसरे प्लैटफ़ॉर्म को कॉलबैक इस्तेमाल करने होते हैं.
-
StorageChange
प्रॉपर्टी
-
newValue
कोई भी वैकल्पिक
अगर कोई नई वैल्यू मौजूद है, तो आइटम की नई वैल्यू.
-
oldValue
कोई भी वैकल्पिक
आइटम की पुरानी वैल्यू, अगर कोई पुरानी वैल्यू मौजूद थी.
प्रॉपर्टी
local
local
स्टोरेज एरिया में मौजूद आइटम, हर मशीन के लिए स्थानीय होते हैं.
टाइप
StorageArea और ऑब्जेक्ट
प्रॉपर्टी
-
QUOTA_BYTES
10485760
डेटा की ज़्यादा से ज़्यादा सीमा (बाइट में) जो लोकल स्टोरेज में सेव की जा सकती है. इसे हर वैल्यू और हर कुंजी की लंबाई के JSON स्ट्रिंगिफ़िकेशन से मापा जाता है. अगर एक्सटेंशन के पास
unlimitedStorage
की अनुमति है, तो इस वैल्यू को अनदेखा कर दिया जाएगा. जिन अपडेट की वजह से यह सीमा पार हो सकती है वे तुरंत फ़ेल हो जाते हैं. साथ ही, कॉलबैक का इस्तेमाल करते समयruntime.lastError
सेट करते हैं या एसिंक/अवेट का इस्तेमाल करने पर अस्वीकार किया गया प्रॉमिस सेट करते हैं.
managed
managed
स्टोरेज एरिया में मौजूद आइटम, एंटरप्राइज़ नीति से सेट किए जाते हैं. इसे डोमेन एडमिन कॉन्फ़िगर करता है. साथ ही, एक्सटेंशन के लिए रीड-ओनली मोड उपलब्ध होता है; इस नेमस्पेस में बदलाव करने की कोशिश करने पर गड़बड़ी होती है. नीति को कॉन्फ़िगर करने के बारे में जानकारी के लिए, स्टोरेज की जगहों के लिए मेनिफ़ेस्ट देखें.
टाइप
session
session
के स्टोरेज एरिया में मौजूद आइटम, मेमोरी में सेव किए जाते हैं और उन्हें डिस्क में नहीं रखा जाएगा.
टाइप
StorageArea और ऑब्जेक्ट
प्रॉपर्टी
-
QUOTA_BYTES
10485760
हर वैल्यू और कुंजी के डाइनैमिक तरीके से असाइन किए गए मेमोरी के इस्तेमाल का अनुमान लगाकर, मेमोरी में सेव की जा सकने वाली ज़्यादा से ज़्यादा संख्या (बाइट में) को. जिन अपडेट की वजह से यह सीमा पार हो सकती है वे तुरंत फ़ेल हो जाते हैं. साथ ही, कॉलबैक का इस्तेमाल करते समय या प्रॉमिस अस्वीकार होने पर,
runtime.lastError
सेट करते हैं.
sync
sync
स्टोरेज एरिया में मौजूद आइटम, 'Chrome सिंक' का इस्तेमाल करके सिंक किए जाते हैं.
टाइप
StorageArea और ऑब्जेक्ट
प्रॉपर्टी
-
MAX_ITEMS
512
सिंक स्टोरेज में सेव किए जा सकने वाले आइटम की ज़्यादा से ज़्यादा संख्या. जिन अपडेट की वजह से यह सीमा पार हो जाएगी वे तुरंत फ़ेल हो जाएंगे. साथ ही, कॉलबैक का इस्तेमाल करते समय या प्रॉमिस को अस्वीकार किए जाने पर,
runtime.lastError
सेट कर दिया जाएगा. -
MAX_SUSTAINED_WRITE_OPERATIONS_PER_MINUTE
10,00,000
अब काम नहीं करताStorage.sync API में अब लंबे समय तक लिखने के लिए कार्रवाई करने का कोटा नहीं है.
-
MAX_WRITE_OPERATIONS_PER_HOUR
1800
हर घंटे ज़्यादा से ज़्यादा
set
,remove
याclear
कार्रवाइयां की जा सकती हैं. यह हर दो सेकंड में एक बार होता है. यह शॉर्ट टर्म के लिए हर मिनट लिखने की ज़्यादा सीमा से कम होता है.जिन अपडेट की वजह से यह सीमा पार हो सकती है वे तुरंत फ़ेल हो जाते हैं. साथ ही, कॉलबैक का इस्तेमाल करते समय या प्रॉमिस अस्वीकार होने पर,
runtime.lastError
सेट करते हैं. -
MAX_WRITE_OPERATIONS_PER_MINUTE
120
हर मिनट ज़्यादा से ज़्यादा
set
,remove
याclear
कार्रवाइयां की जा सकती हैं. यह 2 प्रति सेकंड है, जो छोटी अवधि के दौरान लिखने की हर घंटे की तुलना में ज़्यादा थ्रूपुट देता है.जिन अपडेट की वजह से यह सीमा पार हो सकती है वे तुरंत फ़ेल हो जाते हैं. साथ ही, कॉलबैक का इस्तेमाल करते समय या प्रॉमिस अस्वीकार होने पर,
runtime.lastError
सेट करते हैं. -
QUOTA_BYTES
102,400
डेटा की ज़्यादा से ज़्यादा कुल मात्रा (बाइट में) जिसे सिंक स्टोरेज में सेव किया जा सकता है. इसे हर वैल्यू और हर कुंजी की लंबाई के JSON स्ट्रिंगिफ़िकेशन से मापा जाता है. जिन अपडेट की वजह से यह सीमा पार हो सकती है वे तुरंत फ़ेल हो जाते हैं. साथ ही, कॉलबैक का इस्तेमाल करते समय या प्रॉमिस अस्वीकार होने पर,
runtime.lastError
सेट करते हैं. -
QUOTA_BYTES_PER_ITEM
8192
सिंक किए गए स्टोरेज में मौजूद हर आइटम का ज़्यादा से ज़्यादा साइज़ (बाइट में), जिसे JSON स्ट्रिंग की वैल्यू और कुंजी की लंबाई के आधार पर मापा जाता है. जिन अपडेट में तय सीमा से ज़्यादा आइटम होंगे वे तुरंत लागू नहीं हो पाएंगे. साथ ही, कॉलबैक का इस्तेमाल करते समय या प्रॉमिस अस्वीकार होने पर,
runtime.lastError
सेट कर दिया जाएगा.
इवेंट
onChanged
chrome.storage.onChanged.addListener(
callback: function,
)
एक या उससे ज़्यादा आइटम में बदलाव होने पर ट्रिगर होता है.
पैरामीटर
-
कॉलबैक
फ़ंक्शन
callback
पैरामीटर ऐसा दिखता है:(changes: object, areaName: string) => void
-
बदलाव
ऑब्जेक्ट
-
areaName
स्ट्रिंग
-