chrome.storage

الوصف

استخدِم واجهة برمجة التطبيقات chrome.storage لتخزين بيانات المستخدمين واستردادها وتتبُّع التغييرات التي تطرأ عليها.

الأذونات

storage

لاستخدام Storage API، يجب الإفصاح عن الإذن "storage" في بيان الإضافة. على سبيل المثال:

{
  "name": "My extension",
  ...
  "permissions": [
    "storage"
  ],
  ...
}

المفاهيم والاستخدام

توفّر Storage API طريقة خاصة بالملحقات للاحتفاظ ببيانات المستخدم وحالته. وهي تشبه واجهات برمجة التطبيقات الخاصة بمساحة التخزين في منصة الويب (IndexedDB وStorage)، ولكن تم تصميمها لتلبية احتياجات مساحة التخزين الخاصة بالإضافات. في ما يلي بعض الميزات الرئيسية:

  • يمكن لجميع سياقات الإضافات، بما في ذلك عامل خدمة الإضافة والنصوص البرمجية للمحتوى، الوصول إلى Storage API.
  • يتم تخزين القيم القابلة للتسلسل بتنسيق JSON كخصائص للكائن.
  • تتضمّن Storage API عمليات قراءة وكتابة مجمّعة غير متزامنة.
  • وحتى إذا محا المستخدم ذاكرة التخزين المؤقت وسجلّ التصفّح، ستظل البيانات محفوظة.
  • تظل الإعدادات المخزّنة محفوظة حتى عند استخدام وضع التصفّح المتخفي المقسّم.
  • تتضمّن مساحة تخزين مُدارة حصرية للقراءة فقط لسياسات المؤسسة.

هل يمكن للإضافات استخدام واجهات برمجة تطبيقات التخزين على الويب؟

على الرغم من أنّ الإضافات يمكنها استخدام واجهة Storage (التي يمكن الوصول إليها من window.localStorage) في بعض السياقات (مثل النوافذ المنبثقة وصفحات HTML الأخرى)، لا ننصح باستخدامها للأسباب التالية:

  • لا يمكن لمشغّلي الخدمات في الإضافات استخدام Web Storage API.
  • تتشارك النصوص البرمجية للمحتوى مساحة التخزين مع الصفحة المضيفة.
  • تتم خسارة البيانات المحفوظة باستخدام Web Storage API عندما يمحو المستخدم سجل التصفّح.

لنقل البيانات من واجهات برمجة تطبيقات مساحة التخزين على الويب إلى واجهات برمجة تطبيقات مساحة التخزين الخاصة بالإضافات من مشغّل الخدمات، اتّبِع الخطوات التالية:

  1. أعِدّ صفحة HTML لمستند خارج الشاشة وملف نص برمجي. يجب أن يحتوي ملف البرنامج النصي على روتين تحويل ومعالج onMessage.
  2. في عامل خدمة الإضافة، ابحث عن بياناتك في chrome.storage.
  3. إذا لم يتم العثور على بياناتك، يُرجى الاتصال بالرقم createDocument().
  4. بعد أن يتم حلّ Promise الذي تم إرجاعه، استدعِ sendMessage() لبدء روتين التحويل.
  5. داخل معالج onMessage للمستند خارج الشاشة، استدعِ روتين التحويل.

هناك أيضًا بعض الفروق الدقيقة في طريقة عمل واجهات برمجة التطبيقات لتخزين البيانات على الويب في الإضافات. يمكنك الاطّلاع على مزيد من المعلومات في مقالة مساحة التخزين وملفات تعريف الارتباط.

مساحات التخزين

تنقسم Storage API إلى مناطق التخزين التالية:

storage.local
يتم تخزين البيانات محليًا ومحوها عند إزالة الإضافة. الحدّ الأقصى لمساحة التخزين هو 10 ميغابايت (5 ميغابايت في Chrome 113 والإصدارات الأقدم)، ولكن يمكن زيادته من خلال طلب الإذن "unlimitedStorage". ننصحك باستخدام storage.local لتخزين كميات أكبر من البيانات. يتم عرضه تلقائيًا على نصوص المحتوى البرمجية، ولكن يمكن تغيير هذا السلوك من خلال استدعاء chrome.storage.local.setAccessLevel().
storage.managed
مساحة التخزين المُدارة هي مساحة تخزين للقراءة فقط للإضافات المثبَّتة وفقًا للسياسة، ويديرها مشرفو النظام باستخدام مخطط يحدّده المطوّر وسياسات المؤسسة. تشبه السياسات الخيارات، ولكن يتم ضبطها من قِبل مشرف النظام بدلاً من المستخدم، ما يسمح بضبط الإضافة مسبقًا لجميع مستخدمي المؤسسة. للحصول على معلومات عن السياسات، يُرجى الاطّلاع على مستندات المشرفين. لمزيد من المعلومات حول مساحة التخزين managed، يُرجى الاطّلاع على بيان مساحات التخزين.
storage.session
تحتفظ بالبيانات في الذاكرة أثناء تحميل إحدى الإضافات. يتم محو مساحة التخزين إذا تم إيقاف الإضافة أو إعادة تحميلها أو تحديثها وعند إعادة تشغيل المتصفح. لا يتم عرضه تلقائيًا على نصوص البرامج الخاصة بالمحتوى، ولكن يمكن تغيير هذا السلوك من خلال استدعاء chrome.storage.session.setAccessLevel(). الحدّ الأقصى لمساحة التخزين هو 10 ميغابايت (1 ميغابايت في الإصدار 111 من Chrome والإصدارات الأقدم). واجهةstorage.session هي إحدى الواجهات العديدة التي ننصح بها للعاملين في الخدمة.
storage.sync
في حال تفعيل المزامنة، تتم مزامنة البيانات مع أي متصفّح Chrome سجّل المستخدم الدخول إليه. في حال إيقافها، سيكون سلوكها مثل storage.local. يخزِّن Chrome البيانات محليًا عندما يكون المتصفّح غير متصل بالإنترنت، ويستأنف المزامنة عند إعادة الاتصال بالإنترنت. يبلغ الحدّ الأقصى للحصة 100 كيلوبايت تقريبًا، أي 8 كيلوبايت لكل عنصر. ننصحك باستخدام storage.sync للحفاظ على إعدادات المستخدمين في جميع المتصفحات التي تمت مزامنتها. إذا كنت تعمل مع بيانات حسّاسة للمستخدمين، استخدِم storage.session بدلاً من ذلك. يتم تلقائيًا عرض storage.sync لبرامج النصوص الخاصة بالمحتوى، ولكن يمكن تغيير هذا السلوك من خلال استدعاء chrome.storage.sync.setAccessLevel().

حدود مساحة التخزين والتقييد

تنطبق قيود الاستخدام التالية على Storage API:

  • يصاحب تخزين البيانات غالبًا تكاليف الأداء، وتتضمّن واجهة برمجة التطبيقات حصصًا للتخزين. ننصحك بتوخّي الحذر بشأن البيانات التي تخزِّنها حتى لا تفقد القدرة على تخزين البيانات.
  • قد تستغرق عملية التخزين بعض الوقت. احرص على تنظيم الرمز البرمجي ليراعي هذا الوقت.

للحصول على تفاصيل حول القيود المفروضة على مساحة التخزين وما يحدث عند تجاوزها، اطّلِع على معلومات الحصة المخصّصة لكل من 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);
  }
});

التحميل المُسبَق غير المتزامن من مساحة التخزين

بما أنّ عاملي الخدمة لا يعملون طوال الوقت، تحتاج إضافات Manifest 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);
});

أدوات مطوري البرامج

يمكنك عرض البيانات المخزَّنة باستخدام واجهة برمجة التطبيقات وتعديلها في "أدوات مطوّري البرامج". لمزيد من المعلومات، راجِع صفحة عرض مساحة تخزين الإضافة وتعديلها في مستندات "أدوات مطوّري البرامج".

أمثلة

توضّح الأمثلة التالية مناطق التخزين local وsync وsession:

بالتوقيت المحلي

chrome.storage.local.set({ key: value }).then(() => {
  console.log("Value is set");
});

chrome.storage.local.get(["key"]).then((result) => {
  console.log("Value is " + result.key);
});

مزامنة

chrome.storage.sync.set({ key: value }).then(() => {
  console.log("Value is set");
});

chrome.storage.sync.get(["key"]).then((result) => {
  console.log("Value is " + result.key);
});

الجلسة

chrome.storage.session.set({ key: value }).then(() => {
  console.log("Value was set");
});

chrome.storage.session.get(["key"]).then((result) => {
  console.log("Value is " + result.key);
});

للاطّلاع على عروض توضيحية أخرى لواجهة برمجة التطبيقات Storage API، يمكنك استكشاف أيّ من النماذج التالية:

الأنواع

AccessLevel

الإصدار 102 من Chrome والإصدارات الأحدث

مستوى الوصول إلى مساحة التخزين

Enum

‫"TRUSTED_CONTEXTS"
تحدّد السياقات التي تنشأ من الإضافة نفسها.

"TRUSTED_AND_UNTRUSTED_CONTEXTS"
تحدّد هذه السمة السياقات التي تنشأ من خارج الإضافة.

StorageArea

الخصائص

  • onChanged

    Event<functionvoidvoid>

    الإصدار 73 من Chrome والإصدارات الأحدث

    يتم تنشيط هذا الحدث عند تغيير عنصر واحد أو أكثر.

    تبدو الدالة onChanged.addListener على النحو التالي:

    (callback: function) => {...}

    • callback

      دالة

      تظهر المَعلمة callback على النحو التالي:

      (changes: object) => void

      • التغييرات

        عنصر

  • محو

    باطل

    الوعد

    تتم إزالة جميع العناصر من مساحة التخزين.

    تبدو الدالة clear على النحو التالي:

    (callback?: function) => {...}

    • callback

      الدالة اختيارية

      تظهر المَعلمة callback على النحو التالي:

      () => void

    • returns

      Promise<void>

      الإصدار 95 من Chrome والإصدارات الأحدث

      تتوفّر الوعود في الإصدار Manifest V3 والإصدارات الأحدث، ولكن يتم توفير عمليات الرجوع من أجل التوافق مع الأنظمة القديمة. لا يمكنك استخدام كليهما في طلب الدالة نفسه. يتم حلّ الوعد باستخدام النوع نفسه الذي تم تمريره إلى دالة الرجوع.

  • الحصول على

    باطل

    الوعد

    تعرض هذه السمة عنصرًا واحدًا أو أكثر من مساحة التخزين.

    تبدو الدالة get على النحو التالي:

    (keys?: string | string[] | object, callback?: function) => {...}

    • مفاتيح

      string | string[] | object اختيارية

      مفتاح واحد للحصول على البيانات، أو قائمة بالمفاتيح للحصول على البيانات، أو قاموس يحدّد القيم التلقائية (راجِع وصف العنصر). ستعرض القائمة أو العنصر الفارغَين عنصر نتيجة فارغًا. مرِّر null للحصول على محتوى مساحة التخزين بالكامل.

    • callback

      الدالة اختيارية

      تظهر المَعلمة callback على النحو التالي:

      (items: object) => void

      • items

        عنصر

        عنصر يتضمّن عناصر في عمليات الربط بين المفتاح والقيمة

    • returns

      Promise<object>

      الإصدار 95 من Chrome والإصدارات الأحدث

      تتوفّر الوعود في الإصدار Manifest V3 والإصدارات الأحدث، ولكن يتم توفير عمليات الرجوع من أجل التوافق مع الأنظمة القديمة. لا يمكنك استخدام كليهما في طلب الدالة نفسه. يتم حلّ الوعد باستخدام النوع نفسه الذي تم تمريره إلى دالة الرجوع.

  • getBytesInUse

    باطل

    الوعد

    تعرض هذه الطريقة مقدار المساحة (بالبايت) التي تستخدمها عناصر واحدة أو أكثر.

    تبدو الدالة getBytesInUse على النحو التالي:

    (keys?: string | string[], callback?: function) => {...}

    • مفاتيح

      string | string[] اختيارية

      مفتاح واحد أو قائمة مفاتيح للحصول على إجمالي الاستخدام. ستعرض القائمة الفارغة القيمة 0. أدخِل null للحصول على إجمالي استخدام جميع مساحات التخزين.

    • callback

      الدالة اختيارية

      تظهر المَعلمة callback على النحو التالي:

      (bytesInUse: number) => void

      • bytesInUse

        الرقم

        مقدار المساحة المستخدَمة في التخزين، بالبايت

    • returns

      Promise<number>

      الإصدار 95 من Chrome والإصدارات الأحدث

      تتوفّر الوعود في الإصدار Manifest V3 والإصدارات الأحدث، ولكن يتم توفير عمليات الرجوع من أجل التوافق مع الأنظمة القديمة. لا يمكنك استخدام كليهما في طلب الدالة نفسه. يتم حلّ الوعد باستخدام النوع نفسه الذي تم تمريره إلى دالة الرجوع.

  • getKeys

    باطل

    Promise Chrome 130 والإصدارات الأحدث

    تعرض هذه الطريقة جميع المفاتيح من مساحة التخزين.

    تبدو الدالة getKeys على النحو التالي:

    (callback?: function) => {...}

    • callback

      الدالة اختيارية

      تظهر المَعلمة callback على النحو التالي:

      (keys: string[]) => void

      • مفاتيح

        string[]

        مصفوفة تتضمّن المفاتيح التي تمّت قراءتها من مساحة التخزين

    • returns

      Promise<string[]>

      تتوفّر الوعود في الإصدار Manifest V3 والإصدارات الأحدث، ولكن يتم توفير عمليات الرجوع من أجل التوافق مع الأنظمة القديمة. لا يمكنك استخدام كليهما في طلب الدالة نفسه. يتم حلّ الوعد باستخدام النوع نفسه الذي تم تمريره إلى دالة الرجوع.

  • إزالة

    باطل

    الوعد

    تزيل هذه الطريقة عنصرًا واحدًا أو أكثر من مساحة التخزين.

    تبدو الدالة remove على النحو التالي:

    (keys: string | string[], callback?: function) => {...}

    • مفاتيح

      سلسلة | سلسلة[]

      مفتاح واحد أو قائمة مفاتيح للعناصر المطلوب إزالتها

    • callback

      الدالة اختيارية

      تظهر المَعلمة callback على النحو التالي:

      () => void

    • returns

      Promise<void>

      الإصدار 95 من Chrome والإصدارات الأحدث

      تتوفّر الوعود في الإصدار Manifest V3 والإصدارات الأحدث، ولكن يتم توفير عمليات الرجوع من أجل التوافق مع الأنظمة القديمة. لا يمكنك استخدام كليهما في طلب الدالة نفسه. يتم حلّ الوعد باستخدام النوع نفسه الذي تم تمريره إلى دالة الرجوع.

  • محدّدة

    باطل

    الوعد

    تضبط هذه السمة عناصر متعدّدة.

    تبدو الدالة set على النحو التالي:

    (items: object, callback?: function) => {...}

    • items

      عنصر

      عنصر يقدّم كل زوج من المفاتيح والقيم لتعديل مساحة التخزين. ولن تتأثر أي أزواج أخرى من المفاتيح والقيم في مساحة التخزين.

      سيتم تسلسل القيم الأساسية، مثل الأرقام، على النحو المتوقّع. سيتم عادةً تحويل القيم التي تتضمّن typeof و"object" و"function" إلى {}، باستثناء Array (يتم تحويلها كما هو متوقّع) وDate وRegex (يتم تحويلها باستخدام تمثيل String).

    • callback

      الدالة اختيارية

      تظهر المَعلمة callback على النحو التالي:

      () => void

    • returns

      Promise<void>

      الإصدار 95 من Chrome والإصدارات الأحدث

      تتوفّر الوعود في الإصدار Manifest V3 والإصدارات الأحدث، ولكن يتم توفير عمليات الرجوع من أجل التوافق مع الأنظمة القديمة. لا يمكنك استخدام كليهما في طلب الدالة نفسه. يتم حلّ الوعد باستخدام النوع نفسه الذي تم تمريره إلى دالة الرجوع.

  • setAccessLevel

    باطل

    Promise Chrome 102 والإصدارات الأحدث

    تُحدِّد مستوى الوصول المطلوب إلى مساحة التخزين. سيكون الإعداد التلقائي هو السياقات الموثوق بها فقط.

    تبدو الدالة setAccessLevel على النحو التالي:

    (accessOptions: object, callback?: function) => {...}

    • accessOptions

      عنصر

      • accessLevel

        مستوى الوصول إلى مساحة التخزين

    • callback

      الدالة اختيارية

      تظهر المَعلمة callback على النحو التالي:

      () => void

    • returns

      Promise<void>

      تتوفّر الوعود في الإصدار Manifest V3 والإصدارات الأحدث، ولكن يتم توفير عمليات الرجوع من أجل التوافق مع الأنظمة القديمة. لا يمكنك استخدام كليهما في طلب الدالة نفسه. يتم حلّ الوعد باستخدام النوع نفسه الذي تم تمريره إلى دالة الرجوع.

StorageChange

الخصائص

  • newValue

    أي اختياري

    القيمة الجديدة للعنصر، إذا كانت هناك قيمة جديدة

  • oldValue

    أي اختياري

    القيمة القديمة للعنصر، إذا كانت هناك قيمة قديمة

الخصائص

local

تكون العناصر في مساحة التخزين local محلية لكل جهاز.

النوع

StorageArea والكائن

الخصائص

  • QUOTA_BYTES

    10485760

    الحد الأقصى لمقدار البيانات (بالبايت) التي يمكن تخزينها في وحدة التخزين المحلية، ويتم قياسها من خلال تحويل كل قيمة إلى سلسلة JSON بالإضافة إلى طول كل مفتاح. سيتم تجاهل هذه القيمة إذا كان لدى الإضافة إذن unlimitedStorage. إذا كان التحديث سيؤدي إلى تجاوز هذا الحد، سيتعذّر تنفيذه على الفور وسيتم ضبط runtime.lastError عند استخدام دالة رد الاتصال، أو سيتم رفض الوعد إذا كنت تستخدم async/await.

managed

يتم ضبط العناصر في مساحة التخزين managed من خلال سياسة مؤسسة يضبطها مشرف النطاق، وتكون للقراءة فقط بالنسبة إلى الإضافة، ويؤدي محاولة تعديل مساحة الاسم هذه إلى حدوث خطأ. للحصول على معلومات حول إعداد سياسة، يُرجى الاطّلاع على ملف البيان الخاص بمساحات التخزين.

النوع

session

‫Chrome 102 والإصدارات الأحدث الإصدار 3 من Manifest والإصدارات الأحدث

يتم تخزين العناصر في مساحة التخزين session في الذاكرة ولن يتم حفظها على القرص.

النوع

StorageArea والكائن

الخصائص

  • QUOTA_BYTES

    10485760

    الحدّ الأقصى لمقدار البيانات (بالبايت) التي يمكن تخزينها في الذاكرة، ويتم قياسها من خلال تقدير استخدام الذاكرة المخصّصة ديناميكيًا لكل قيمة ومفتاح. تتعذّر على الفور التحديثات التي تؤدي إلى تجاوز هذا الحد ويتم ضبط runtime.lastError عند استخدام دالة رد الاتصال أو عند رفض Promise.

sync

تتم مزامنة العناصر في مساحة التخزين sync باستخدام ميزة "مزامنة Chrome".

النوع

StorageArea والكائن

الخصائص

  • MAX_ITEMS

    512

    الحدّ الأقصى لعدد العناصر التي يمكن تخزينها في مساحة التخزين المتزامنة ستتعذّر على الفور التحديثات التي ستؤدي إلى تجاوز هذا الحدّ وسيتم ضبط runtime.lastError عند استخدام دالة ردّ الاتصال أو عند رفض Promise.

  • MAX_SUSTAINED_WRITE_OPERATIONS_PER_MINUTE

    1000000

    تم إيقافها نهائيًا

    لم تعُد واجهة برمجة التطبيقات storage.sync تتضمّن حصة لعملية الكتابة المستمرة.

  • MAX_WRITE_OPERATIONS_PER_HOUR

    1800

    الحد الأقصى لعدد عمليات set أو remove أو clear التي يمكن تنفيذها كل ساعة هذا يعني مرة واحدة كل ثانيتين، وهو حدّ أقصى أقل من الحدّ الأقصى لعدد عمليات الكتابة في الدقيقة على المدى القصير.

    تتعذّر على الفور التحديثات التي تؤدي إلى تجاوز هذا الحد ويتم ضبط runtime.lastError عند استخدام دالة رد الاتصال أو عند رفض Promise.

  • MAX_WRITE_OPERATIONS_PER_MINUTE

    120

    الحد الأقصى لعدد عمليات set أو remove أو clear التي يمكن تنفيذها كل دقيقة هذا يعني 2 في الثانية، ما يوفّر معدّل نقل بيانات أعلى من عمليات الكتابة في الساعة على مدار فترة زمنية أقصر.

    تتعذّر على الفور التحديثات التي تؤدي إلى تجاوز هذا الحد ويتم ضبط runtime.lastError عند استخدام دالة رد الاتصال أو عند رفض Promise.

  • QUOTA_BYTES

    102400

    الحد الأقصى لإجمالي حجم البيانات (بالبايت) التي يمكن تخزينها في مساحة التخزين المتزامنة، ويتم قياسها من خلال تحويل كل قيمة إلى سلسلة JSON بالإضافة إلى طول كل مفتاح. تتعذّر على الفور التحديثات التي تؤدي إلى تجاوز هذا الحد ويتم ضبط runtime.lastError عند استخدام دالة رد الاتصال أو عند رفض Promise.

  • QUOTA_BYTES_PER_ITEM

    8192

    الحدّ الأقصى لحجم كل عنصر فردي في مساحة التخزين المتزامنة (بالبايت)، ويتم قياسه من خلال تحويل قيمة العنصر إلى سلسلة JSON بالإضافة إلى طول مفتاحه. ستتعذّر على الفور التحديثات التي تحتوي على عناصر أكبر من هذا الحدّ، وسيتم ضبط runtime.lastError عند استخدام دالة ردّ الاتصال أو عند رفض Promise.

الفعاليات

onChanged

chrome.storage.onChanged.addListener(
  callback: function,
)

يتم تنشيط هذا الحدث عند تغيير عنصر واحد أو أكثر.

المعلمات

  • callback

    دالة

    تظهر المَعلمة callback على النحو التالي:

    (changes: object, areaName: string) => void

    • التغييرات

      عنصر

    • areaName

      سلسلة