कंपनी का ब्यौरा
उपयोगकर्ता का डेटा सेव करने, वापस पाने, और उसमें हुए बदलावों को ट्रैक करने के लिए, chrome.storage
एपीआई का इस्तेमाल करें.
अनुमतियां
storage
खास जानकारी
Storage API, एक्सटेंशन के हिसाब से उपयोगकर्ता के डेटा और स्थिति को बनाए रखने का एक तरीका उपलब्ध कराता है. यह वेब प्लैटफ़ॉर्म के स्टोरेज एपीआई (IndexedDB, और Storage) के जैसा है. हालांकि, इसे एक्सटेंशन की स्टोरेज से जुड़ी ज़रूरतों को पूरा करने के लिए डिज़ाइन किया गया था. यहां पर कुछ मुख्य सुविधाएं दी गई हैं:
- एक्सटेंशन सर्विस वर्कर और कॉन्टेंट स्क्रिप्ट के साथ-साथ सभी एक्सटेंशन कॉन्टेक्स्ट के पास, Storage API का ऐक्सेस होता है.
- क्रम से लगाई जा सकने वाली JSON वैल्यू, ऑब्जेक्ट प्रॉपर्टी के तौर पर स्टोर की जाती हैं.
- स्टोरेज एपीआई को एक साथ कई रीड और राइट ऐक्शन के साथ एसिंक्रोनस होता है.
- उपयोगकर्ता अगर कैश मेमोरी और ब्राउज़िंग इतिहास मिटा देता है, तब भी डेटा बना रहता है.
- स्प्लिट गुप्त मोड का इस्तेमाल करने पर भी सेव की गई सेटिंग बनी रहती हैं.
- इसमें एंटरप्राइज़ नीतियों के लिए, रीड-ओनली मैनेज किया जा रहा स्टोरेज एरिया शामिल है.
एक्सटेंशन, पॉप-अप और दूसरे एचटीएमएल पेजों में [Storage
][mdn-storage] इंटरफ़ेस का इस्तेमाल कर सकते हैं. इसे window.localStorage
से ऐक्सेस किया जा सकता है. हालांकि, ऐसा इन वजहों से नहीं किया जा सकता:
- एक्सटेंशन का सर्विस वर्कर
Storage
को ऐक्सेस नहीं कर सकता. - कॉन्टेंट स्क्रिप्ट, होस्ट पेज के साथ स्टोरेज शेयर करती हैं.
- जब उपयोगकर्ता अपना ब्राउज़िंग इतिहास मिटाता है, तब
Storage
इंटरफ़ेस की मदद से सेव किया गया डेटा मिट जाता है.
सर्विस वर्कर के डेटा को वेब स्टोरेज एपीआई से एक्सटेंशन स्टोरेज एपीआई में ले जाने के लिए:
- कन्वर्ज़न रूटीन और [
onMessage
][on-message] हैंडलर की मदद से एक ऑफ़स्क्रीन दस्तावेज़ बनाएं. - किसी ऑफ़स्क्रीन दस्तावेज़ में कन्वर्ज़न रूटीन जोड़ें.
- एक्सटेंशन सर्विस वर्कर में, अपने डेटा के लिए
chrome.storage
देखें. - अगर आपका डेटा नहीं मिलता है, तो एक ऑफ़स्क्रीन दस्तावेज़ [बनाएं][बनाएं] और कन्वर्ज़न रूटीन शुरू करने के लिए, [
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"
अनुमति का एलान करें. उदाहरण के लिए:
{
"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
स्टोरेज एरिया के बारे में ज़्यादा जानने के लिए, स्टोरेज की जगहों के लिए मेनिफ़ेस्ट देखें.
स्टोरेज और थ्रॉटलिंग की सीमाएं
स्टोरेज एपीआई में चीज़ें जोड़ने के बारे में यह न सोचें कि चीज़ें बड़े ट्रक में डाल दी जाती हैं. स्टोरेज में जोड़ने का यह मतलब है कि जैसे कि किसी चीज़ को पाइप में डाल दिया जाता है. पाइप में पहले से ही सामग्री हो सकती है और वह भर भी सकता है. हमेशा डिवाइस के स्टोरेज में जानकारी जोड़ने और उसे रिकॉर्ड करने में लगने वाले समय के बीच का अंतर मान लें.
स्टोरेज की सीमाओं और तय सीमा से ज़्यादा स्टोरेज इस्तेमाल करने पर क्या होता है, इस बारे में जानने के लिए 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
इवेंट<Functionvoidvoid>
Chrome 73 और इसके बाद के वर्शनएक या उससे ज़्यादा आइटम बदलने पर सक्रिय होता है.
onChanged.addListener
फ़ंक्शन ऐसा दिखता है:(callback: function) => {...}
-
कॉलबैक
function
callback
पैरामीटर ऐसा दिखता है:(changes: object) => void
-
बदलाव
ऑब्जेक्ट
-
-
-
मिटाएं
void
वादास्टोरेज से सभी आइटम हटा देता है.
clear
फ़ंक्शन ऐसा दिखता है:(callback?: function) => {...}
-
कॉलबैक
फ़ंक्शन ज़रूरी नहीं
callback
पैरामीटर ऐसा दिखता है:() => void
-
returns
Promise<void>
Chrome 88+प्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और उसके बाद के वर्शन पर काम करता है. अन्य प्लैटफ़ॉर्म के लिए कॉलबैक का इस्तेमाल करना ज़रूरी है.
-
-
रिवॉर्ड पाएँ
void
वादास्टोरेज से एक या उससे ज़्यादा आइटम खरीदे जा सकते हैं.
get
फ़ंक्शन ऐसा दिखता है:(keys?: string | string[] | object, callback?: function) => {...}
-
बटन
स्ट्रिंग | स्ट्रिंग[] | ऑब्जेक्ट ज़रूरी नहीं
पाने के लिए एक बटन, पाने के लिए कुंजियों की सूची या डिफ़ॉल्ट मान तय करने वाली शब्दकोश (ऑब्जेक्ट का ब्यौरा देखें). एक खाली सूची या ऑब्जेक्ट, नतीजे से जुड़ा एक खाली ऑब्जेक्ट दिखाएगा. स्टोरेज का पूरा कॉन्टेंट पाने के लिए,
null
पास करें. -
कॉलबैक
फ़ंक्शन ज़रूरी नहीं
callback
पैरामीटर ऐसा दिखता है:(items: object) => void
-
items
ऑब्जेक्ट
ऑब्जेक्ट की, की-वैल्यू मैपिंग में आइटम मौजूद है.
-
-
returns
Promise<object>
Chrome 88+प्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और उसके बाद के वर्शन पर काम करता है. अन्य प्लैटफ़ॉर्म के लिए कॉलबैक का इस्तेमाल करना ज़रूरी है.
-
-
getBytesInUse
void
वादाएक या उससे ज़्यादा आइटम के इस्तेमाल किए जा रहे स्टोरेज (बाइट में) की जानकारी देता है.
getBytesInUse
फ़ंक्शन ऐसा दिखता है:(keys?: string | string[], callback?: function) => {...}
-
बटन
स्ट्रिंग | string[] ज़रूरी नहीं
कुल इस्तेमाल की जानकारी पाने के लिए, एक बटन या कुंजियों की सूची. खाली सूची से 0 वैल्यू दिखेगी. पूरे स्टोरेज का कुल इस्तेमाल पाने के लिए
null
पास करें. -
कॉलबैक
फ़ंक्शन ज़रूरी नहीं
callback
पैरामीटर ऐसा दिखता है:(bytesInUse: number) => void
-
bytesInUse
नंबर
स्टोरेज में इस्तेमाल की जा रही जगह को बाइट में.
-
-
returns
वादा<number>
Chrome 88+प्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और उसके बाद के वर्शन पर काम करता है. अन्य प्लैटफ़ॉर्म के लिए कॉलबैक का इस्तेमाल करना ज़रूरी है.
-
-
कॉन्टेंट हटाना
void
वादास्टोरेज से एक या उससे ज़्यादा आइटम हटाता है.
remove
फ़ंक्शन ऐसा दिखता है:(keys: string | string[], callback?: function) => {...}
-
बटन
स्ट्रिंग | स्ट्रिंग[]
आइटम हटाने के लिए एक बटन या कुंजियों की सूची.
-
कॉलबैक
फ़ंक्शन ज़रूरी नहीं
callback
पैरामीटर ऐसा दिखता है:() => void
-
returns
Promise<void>
Chrome 88+प्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और उसके बाद के वर्शन पर काम करता है. अन्य प्लैटफ़ॉर्म के लिए कॉलबैक का इस्तेमाल करना ज़रूरी है.
-
-
सेट करो
void
वादाएक से ज़्यादा आइटम सेट करता है.
set
फ़ंक्शन ऐसा दिखता है:(items: object, callback?: function) => {...}
-
items
ऑब्जेक्ट
एक ऐसा ऑब्जेक्ट जो स्टोरेज को अपडेट करने के लिए, हर कुंजी/वैल्यू पेयर को देता है. स्टोरेज में मौजूद किसी भी अन्य की/वैल्यू पेयर पर इसका कोई असर नहीं होगा.
संख्याओं जैसे प्रिमिटिव वैल्यू को उम्मीद के मुताबिक क्रम से लगाया जाएगा. आम तौर पर,
typeof
"object"
और"function"
वाली वैल्यू,{}
के क्रम में लगाई जाती हैं. हालांकि,Array
(उम्मीद के मुताबिक क्रम से दिखाया जाता है),Date
, औरRegex
(उनकेString
रिप्रज़ेंटेशन का इस्तेमाल करके क्रम से लगाया जाता है) को छोड़कर. -
कॉलबैक
फ़ंक्शन ज़रूरी नहीं
callback
पैरामीटर ऐसा दिखता है:() => void
-
returns
Promise<void>
Chrome 88+प्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और उसके बाद के वर्शन पर काम करता है. अन्य प्लैटफ़ॉर्म के लिए कॉलबैक का इस्तेमाल करना ज़रूरी है.
-
-
setAccessLevel
void
Promise Chrome 102+स्टोरेज एरिया के लिए, अपनी पसंद का ऐक्सेस लेवल सेट करता है. डिफ़ॉल्ट तौर पर, सिर्फ़ भरोसेमंद कॉन्टेक्स्ट ही डिफ़ॉल्ट होंगे.
setAccessLevel
फ़ंक्शन ऐसा दिखता है:(accessOptions: object, callback?: function) => {...}
-
accessOptions
ऑब्जेक्ट
-
accessLevel
स्टोरेज एरिया के ऐक्सेस का लेवल.
-
-
कॉलबैक
फ़ंक्शन ज़रूरी नहीं
callback
पैरामीटर ऐसा दिखता है:() => void
-
returns
Promise<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
1000000
अब सेवा में नहीं है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
102400
सिंक किए जाने वाले स्टोरेज में सेव किया जा सकने वाला ज़्यादा से ज़्यादा डेटा (बाइट में). इसे हर वैल्यू और कुंजी की लंबाई के JSON स्ट्रिंगिफ़िकेशन से मापा जाता है. जिन अपडेट की वजह से यह सीमा पार हो सकती है वे तुरंत फ़ेल हो जाएंगे. साथ ही, कॉलबैक का इस्तेमाल करते समय या प्रॉमिस अस्वीकार होने पर,
runtime.lastError
को सेट किया जाएगा. -
QUOTA_BYTES_PER_ITEM
8192
सिंक स्टोरेज में मौजूद हर आइटम का ज़्यादा से ज़्यादा साइज़ (बाइट में). इसे इसकी वैल्यू और कुंजी की लंबाई के JSON स्ट्रिंगिफ़िकेशन से मापा जाता है. इस सीमा से बड़े आइटम वाले अपडेट तुरंत लागू नहीं हो पाएंगे. साथ ही, कॉलबैक का इस्तेमाल करते समय या प्रॉमिस अस्वीकार किए जाने पर,
runtime.lastError
सेट हो जाएगा.
इवेंट
onChanged
chrome.storage.onChanged.addListener(
callback: function,
)
एक या उससे ज़्यादा आइटम बदलने पर सक्रिय होता है.
पैरामीटर
-
कॉलबैक
function
callback
पैरामीटर ऐसा दिखता है:(changes: object, areaName: string) => void
-
बदलाव
ऑब्जेक्ट
-
areaName
स्ट्रिंग
-