chrome.storage

คำอธิบาย

ใช้ chrome.storage API เพื่อจัดเก็บ เรียกข้อมูล และติดตามการเปลี่ยนแปลงในข้อมูลผู้ใช้

สิทธิ์

storage

ภาพรวม

Storage API มอบวิธีที่เจาะจงของส่วนขยายในการคงข้อมูลผู้ใช้และสถานะ ซึ่งคล้ายกับ API พื้นที่เก็บข้อมูลของแพลตฟอร์มเว็บ (IndexedDB และพื้นที่เก็บข้อมูล) แต่ออกแบบมาเพื่อตอบสนองความต้องการด้านพื้นที่เก็บข้อมูลของส่วนขยาย ฟีเจอร์หลักมีดังนี้

  • บริบทส่วนขยายทั้งหมด รวมถึง Service Worker สำหรับส่วนขยายและสคริปต์เนื้อหาจะมีสิทธิ์เข้าถึง Storage API
  • ค่าที่ทำให้อนุกรมของ JSON ได้จะจัดเก็บเป็นคุณสมบัติของออบเจ็กต์
  • Storage API ทำงานไม่พร้อมกันกับการดำเนินการอ่านและเขียนจำนวนมาก
  • แม้ว่าผู้ใช้จะล้างแคชและประวัติการท่องเว็บแล้ว แต่ข้อมูลจะยังคงอยู่
  • การตั้งค่าที่บันทึกไว้จะยังคงอยู่แม้จะใช้แยกโหมดไม่ระบุตัวตนก็ตาม
  • รวมพื้นที่เก็บข้อมูลที่มีการจัดการแบบอ่านอย่างเดียวสำหรับนโยบายองค์กร

แม้ว่าส่วนขยายจะใช้อินเทอร์เฟซ [Storage][mdn-storage] ได้ (เข้าถึงได้จาก window.localStorage) ในบางบริบท (ป๊อปอัปและหน้า HTML อื่นๆ) แต่เราไม่แนะนำวิธีนี้ด้วยเหตุผลต่อไปนี้

  • Service Worker ของส่วนขยายเข้าถึง Storage ไม่ได้
  • สคริปต์เนื้อหาจะใช้พื้นที่เก็บข้อมูลร่วมกับหน้าโฮสต์
  • ข้อมูลที่บันทึกโดยใช้อินเทอร์เฟซ Storage จะสูญหายเมื่อผู้ใช้ล้างประวัติการท่องเว็บ

หากต้องการย้ายข้อมูลจาก Web Storage API ไปยัง API พื้นที่เก็บข้อมูลของส่วนขยายจาก Service Worker ให้ทำดังนี้

  1. สร้างเอกสารนอกหน้าจอที่มีกิจวัตร Conversion และเครื่องจัดการ [onMessage][on-message]
  2. เพิ่มกิจวัตร Conversion ลงในเอกสารนอกหน้าจอ
  3. ในโปรแกรมทำงานของบริการส่วนขยาย ให้ตรวจสอบ chrome.storage เพื่อหาข้อมูลของคุณ
  4. หากไม่พบข้อมูล ให้[สร้าง][create-offscreen] เอกสารนอกหน้าจอแล้วเรียกใช้ [sendMessage()][send-message] เพื่อเริ่มกิจวัตร Conversion
  5. เรียกใช้กิจวัตร Conversion ภายในเครื่องจัดการ onMessage ของเอกสารนอกหน้าจอ

นอกจากนี้ยังมีความแตกต่างเล็กๆ น้อยๆ เกี่ยวกับวิธีการทำงานของ API พื้นที่เก็บข้อมูลเว็บในส่วนขยาย ดูข้อมูลเพิ่มเติมใน บทความ [พื้นที่เก็บข้อมูลและคุกกี้][พื้นที่เก็บข้อมูลและคุกกี้]

พื้นที่เก็บข้อมูล

Storage API แบ่งออกเป็น 4 ที่เก็บข้อมูลดังต่อไปนี้ ("พื้นที่พื้นที่เก็บข้อมูล")

storage.local
ระบบจะเก็บข้อมูลไว้ในเครื่อง ซึ่งจะล้างเมื่อนำส่วนขยายออก ขีดจำกัดโควต้าจะอยู่ที่ประมาณ 10 MB แต่เพิ่มได้ด้วยการขอสิทธิ์ "unlimitedStorage" พิจารณาใช้ฟีเจอร์นี้เพื่อจัดเก็บข้อมูลจำนวนมาก
storage.sync
หากเปิดการซิงค์ไว้ ข้อมูลจะซิงค์กับเบราว์เซอร์ Chrome ใดก็ตามที่ผู้ใช้ลงชื่อเข้าใช้อยู่ หากปิดใช้ จะมีลักษณะการทำงานเหมือน storage.local Chrome จะเก็บข้อมูลไว้ในเครื่องเมื่อเบราว์เซอร์ออฟไลน์ และซิงค์ต่อเมื่อกลับมาออนไลน์อีกครั้ง โดยขีดจำกัดโควต้าจะอยู่ที่ประมาณ 100 KB หรือ 8 KB ต่อรายการ พิจารณาใช้ฟีเจอร์นี้เพื่อเก็บการตั้งค่าผู้ใช้ในเบราว์เซอร์ที่ซิงค์ไว้
storage.session
เก็บข้อมูลในหน่วยความจำตลอดระยะเวลาของเซสชันเบราว์เซอร์ ระบบไม่แสดงสคริปต์เนื้อหาโดยค่าเริ่มต้น แต่คุณเปลี่ยนลักษณะการทำงานนี้ได้ในการตั้งค่า chrome.storage.session.setAccessLevel() โดยขีดจำกัดโควต้าจะอยู่ที่ประมาณ 10 MB ลองใช้แพลตฟอร์มนี้เพื่อเก็บตัวแปรร่วมข้ามการทำงานของ Service Worker
storage.managed
ผู้ดูแลระบบสามารถใช้นโยบายสคีมาและนโยบายองค์กรเพื่อกำหนดการตั้งค่าของส่วนขยายที่รองรับในสภาพแวดล้อมที่มีการจัดการ พื้นที่เก็บข้อมูลนี้เป็นแบบอ่านอย่างเดียว

ไฟล์ Manifest

หากต้องการใช้ 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 ได้ที่ไฟล์ Manifest สำหรับพื้นที่เก็บข้อมูล

ขีดจำกัดพื้นที่เก็บข้อมูลและการควบคุม

อย่าคิดว่าการเพิ่มไปยัง Storage API จะเป็นการใส่ของลงในรถบรรทุกขนาดใหญ่ คิดว่าการเพิ่มไปยัง ให้เหมือนการใส่ข้อมูลลงในท่อ ท่ออาจมีวัสดุอยู่แล้ว ก็อาจได้รับการเติมด้วย คิดให้ดีว่าเวลาที่คุณเพิ่มพื้นที่เก็บข้อมูลกับเวลาจริงจะเกิดความล่าช้าเสมอ บันทึกไว้

โปรดดูรายละเอียดเกี่ยวกับข้อจำกัดของพื้นที่เก็บข้อมูลและสิ่งที่จะเกิดขึ้นเมื่อใช้พื้นที่เก็บข้อมูลเกินขีดจำกัด โปรดดูข้อมูลโควต้าของ sync, local และ session

กรณีการใช้งาน

ส่วนต่อไปนี้จะแสดงกรณีการใช้งานทั่วไปสำหรับ Storage API

การตอบสนองต่อการอัปเดตพื้นที่เก็บข้อมูลแบบซิงโครนัส

หากต้องการติดตามการเปลี่ยนแปลงที่เกิดขึ้นกับพื้นที่เก็บข้อมูล ให้เพิ่ม Listener ลงในเหตุการณ์ 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 ทันที และ Service Worker จะใช้ 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);
  }
});

การโหลดล่วงหน้าแบบไม่พร้อมกันจากพื้นที่เก็บข้อมูล

เนื่องจาก Service Worker ไม่ได้ทำงานอยู่ตลอดเวลา บางครั้งส่วนขยาย 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);
});

ตัวอย่างส่วนขยาย

หากต้องการดูการสาธิตอื่นๆ ของ Storage API ให้สำรวจตัวอย่างต่อไปนี้

ประเภท

AccessLevel

Chrome 102 ขึ้นไป

ระดับการเข้าถึงของพื้นที่เก็บข้อมูล

ค่าแจกแจง

"TRUSTED_CONTEXTS"
ระบุบริบทที่มาจากส่วนขยาย

&quot;TRUSTED_AND_UNTRUSTED_CONTEXTS&quot;
ระบุบริบทที่มาจากภายนอกส่วนขยาย

StorageArea

พร็อพเพอร์ตี้

  • onChanged

    เหตุการณ์<functionvoid>

    Chrome 73 ขึ้นไป

    เริ่มทำงานเมื่อมีการเปลี่ยนแปลงอย่างน้อย 1 รายการ

    ฟังก์ชัน onChanged.addListener มีลักษณะดังนี้

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

    • Callback

      ฟังก์ชัน

      พารามิเตอร์ callback มีลักษณะดังนี้

      (changes: object) => void

      • การเปลี่ยนแปลง

        ออบเจ็กต์

  • ล้าง

    เป็นโมฆะ

    สัญญา

    นำรายการทั้งหมดออกจากพื้นที่เก็บข้อมูล

    ฟังก์ชัน clear มีลักษณะดังนี้

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

    • Callback

      ไม่บังคับ

      พารามิเตอร์ callback มีลักษณะดังนี้

      () => void

    • returns

      คำมั่นสัญญา<โมฆะ>

      Chrome เวอร์ชัน 88 ขึ้นไป

      Promise รองรับไฟล์ Manifest V3 ขึ้นไปเท่านั้น ส่วนแพลตฟอร์มอื่นๆ ต้องใช้ Callback

  • รับ

    เป็นโมฆะ

    สัญญา

    รับอย่างน้อย 1 รายการจากพื้นที่เก็บข้อมูล

    ฟังก์ชัน get มีลักษณะดังนี้

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

    • กุญแจ

      string | string[] | ออบเจ็กต์ไม่บังคับ

      คีย์เดียวสำหรับรับ รายการคีย์ที่จะรับ หรือพจนานุกรมที่ระบุค่าเริ่มต้น (ดูคำอธิบายออบเจ็กต์) รายการหรือออบเจ็กต์ที่ว่างเปล่าจะแสดงออบเจ็กต์ผลลัพธ์ที่ว่างเปล่า ส่งใน null เพื่อรับเนื้อหาทั้งหมดของพื้นที่เก็บข้อมูล

    • Callback

      ไม่บังคับ

      พารามิเตอร์ callback มีลักษณะดังนี้

      (items: object) => void

      • รายการ

        ออบเจ็กต์

        ออบเจ็กต์ที่มีรายการในการแมปคีย์-ค่า

    • returns

      Promise&lt;object&gt;

      Chrome เวอร์ชัน 88 ขึ้นไป

      Promise รองรับไฟล์ Manifest V3 ขึ้นไปเท่านั้น ส่วนแพลตฟอร์มอื่นๆ ต้องใช้ Callback

  • getBytesInUse

    เป็นโมฆะ

    สัญญา

    รับข้อมูลพื้นที่ (ในหน่วยไบต์) ที่มีรายการอย่างน้อย 1 รายการใช้อยู่

    ฟังก์ชัน getBytesInUse มีลักษณะดังนี้

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

    • กุญแจ

      string | string[] ไม่บังคับ

      คีย์เดียวหรือลิสต์คีย์เพื่อดูการใช้งานทั้งหมด รายการที่ว่างเปล่าจะแสดงค่าเป็น 0 ส่งใน null เพื่อรับปริมาณการใช้พื้นที่เก็บข้อมูลทั้งหมด

    • Callback

      ไม่บังคับ

      พารามิเตอร์ callback มีลักษณะดังนี้

      (bytesInUse: number) => void

      • bytesInUse

        ตัวเลข

        ปริมาณพื้นที่ที่ใช้ในพื้นที่เก็บข้อมูลในหน่วยไบต์

    • returns

      Promise&lt;number&gt;

      Chrome เวอร์ชัน 88 ขึ้นไป

      Promise รองรับไฟล์ Manifest V3 ขึ้นไปเท่านั้น ส่วนแพลตฟอร์มอื่นๆ ต้องใช้ Callback

  • getKeys

    เป็นโมฆะ

    สัญญา รอดำเนินการ

    ดึงคีย์ทั้งหมดจากพื้นที่เก็บข้อมูล

    ฟังก์ชัน getKeys มีลักษณะดังนี้

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

    • Callback

      ไม่บังคับ

      พารามิเตอร์ callback มีลักษณะดังนี้

      (keys: string[]) => void

      • กุญแจ

        สตริง[]

        อาร์เรย์ด้วยคีย์ที่อ่านจากพื้นที่เก็บข้อมูล

    • returns

      Promise&lt;string[]&gt;

      Promise รองรับไฟล์ Manifest V3 ขึ้นไปเท่านั้น ส่วนแพลตฟอร์มอื่นๆ ต้องใช้ Callback

  • นำข้อมูลออก

    เป็นโมฆะ

    สัญญา

    นำรายการออกจากพื้นที่เก็บข้อมูล

    ฟังก์ชัน remove มีลักษณะดังนี้

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

    • กุญแจ

      string | สตริง[]

      คีย์เดียวหรือชุดคีย์สำหรับรายการต่างๆ ที่จะนำออก

    • Callback

      ไม่บังคับ

      พารามิเตอร์ callback มีลักษณะดังนี้

      () => void

    • returns

      คำมั่นสัญญา<โมฆะ>

      Chrome เวอร์ชัน 88 ขึ้นไป

      Promise รองรับไฟล์ Manifest V3 ขึ้นไปเท่านั้น ส่วนแพลตฟอร์มอื่นๆ ต้องใช้ Callback

  • ตั้งค่า

    เป็นโมฆะ

    สัญญา

    ตั้งค่าหลายรายการ

    ฟังก์ชัน set มีลักษณะดังนี้

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

    • รายการ

      ออบเจ็กต์

      ออบเจ็กต์ที่ให้คู่คีย์/ค่าแต่ละคู่สำหรับอัปเดตพื้นที่เก็บข้อมูล คู่คีย์/ค่าอื่นๆ ในพื้นที่เก็บข้อมูลจะไม่ได้รับผลกระทบ

      ค่าพื้นฐาน เช่น ตัวเลข จะเรียงลำดับตามที่คาดไว้ โดยทั่วไปแล้วค่าที่มี typeof "object" และ "function" จะเป็นแบบอนุกรมเป็น {} ยกเว้น Array (ทำให้เป็นอนุกรมตามที่คาดไว้), Date และ Regex (ทำให้เป็นอนุกรมโดยใช้การแทน String)

    • Callback

      ไม่บังคับ

      พารามิเตอร์ callback มีลักษณะดังนี้

      () => void

    • returns

      คำมั่นสัญญา<โมฆะ>

      Chrome เวอร์ชัน 88 ขึ้นไป

      Promise รองรับไฟล์ Manifest V3 ขึ้นไปเท่านั้น ส่วนแพลตฟอร์มอื่นๆ ต้องใช้ Callback

  • setAccessLevel

    เป็นโมฆะ

    สัญญา Chrome 102 ขึ้นไป

    ตั้งค่าระดับการเข้าถึงที่ต้องการสำหรับพื้นที่เก็บข้อมูล ค่าเริ่มต้นจะเป็นบริบทที่เชื่อถือได้เท่านั้น

    ฟังก์ชัน setAccessLevel มีลักษณะดังนี้

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

    • accessOptions

      ออบเจ็กต์

      • accessLevel

        ระดับการเข้าถึงของพื้นที่เก็บข้อมูล

    • Callback

      ไม่บังคับ

      พารามิเตอร์ callback มีลักษณะดังนี้

      () => void

    • returns

      คำมั่นสัญญา<โมฆะ>

      Promise รองรับไฟล์ Manifest V3 ขึ้นไปเท่านั้น ส่วนแพลตฟอร์มอื่นๆ ต้องใช้ Callback

StorageChange

พร็อพเพอร์ตี้

  • newValue

    ใดก็ได้ไม่บังคับ

    ค่าใหม่ของสินค้า หากมีค่าใหม่

  • oldValue

    ใดก็ได้ไม่บังคับ

    ค่าเดิมของรายการ หากมีค่าเก่า

พร็อพเพอร์ตี้

local

รายการในพื้นที่เก็บข้อมูลของ local จะเป็นข้อมูลในเครื่องของแต่ละเครื่อง

ประเภท

StorageArea และ ออบเจ็กต์

พร็อพเพอร์ตี้

  • QUOTA_BYTES

    10485760

    จำนวนข้อมูลสูงสุด (เป็นไบต์) ที่สามารถจัดเก็บไว้ในพื้นที่เก็บข้อมูลในเครื่อง ซึ่งวัดโดยการกำหนดสตริง JSON ของทุกค่าบวกความยาวของคีย์ทุกคีย์ ระบบจะไม่สนใจค่านี้หากส่วนขยายมีสิทธิ์ unlimitedStorage การอัปเดตที่จะทำให้เกินขีดจำกัดนี้จะดำเนินการไม่สำเร็จทันที และจะตั้งค่า runtime.lastError เมื่อใช้ Callback หรือ Promise ที่ถูกปฏิเสธหากใช้ async/await

managed

รายการในพื้นที่เก็บข้อมูลของ managed จะได้รับการตั้งค่าโดยนโยบายองค์กรที่กำหนดโดยผู้ดูแลระบบโดเมน และเป็นแบบอ่านอย่างเดียวสำหรับส่วนขยาย การพยายามแก้ไขเนมสเปซนี้ทำให้เกิดข้อผิดพลาด โปรดดูข้อมูลเกี่ยวกับการกำหนดค่านโยบายที่หัวข้อไฟล์ Manifest สำหรับพื้นที่เก็บข้อมูล

ประเภท

session

Chrome 102 ขึ้นไป MV3 ขึ้นไป

รายการในพื้นที่เก็บข้อมูลของ session จะเก็บไว้ในหน่วยความจำและจะไม่คงอยู่ในดิสก์

ประเภท

StorageArea และ ออบเจ็กต์

พร็อพเพอร์ตี้

  • QUOTA_BYTES

    10485760

    จำนวนข้อมูลสูงสุด (เป็นไบต์) ที่สามารถจัดเก็บไว้ในหน่วยความจำ ซึ่งวัดโดยการประมาณการใช้งานหน่วยความจำที่จัดสรรแบบไดนามิกของทุกค่าและคีย์ การอัปเดตที่จะทำให้เกินขีดจำกัดนี้จะดำเนินการไม่สำเร็จทันที และจะตั้งค่า runtime.lastError เมื่อใช้ Callback หรือเมื่อมีการปฏิเสธ Promise

sync

รายการในพื้นที่เก็บข้อมูลของ sync จะซิงค์โดยใช้การซิงค์ของ Chrome

ประเภท

StorageArea และ ออบเจ็กต์

พร็อพเพอร์ตี้

  • MAX_ITEMS

    512

    จำนวนรายการสูงสุดที่สามารถจัดเก็บไว้ในพื้นที่เก็บข้อมูลที่ซิงค์ได้ การอัปเดตที่จะทำให้เกินขีดจำกัดนี้จะดำเนินการไม่สำเร็จทันที และจะตั้งค่า runtime.lastError เมื่อใช้ Callback หรือเมื่อมีการปฏิเสธ Promise

  • MAX_SUSTAINED_WRITE_OPERATIONS_PER_MINUTE

    1000000

    เลิกใช้งานแล้ว

    Storage.sync API ไม่มีโควต้าการดำเนินการเขียนที่ยั่งยืนอีกต่อไป

  • MAX_WRITE_OPERATIONS_PER_HOUR

    1800

    จำนวนการดำเนินการ set, remove หรือ clear สูงสุดที่ดำเนินการได้ในแต่ละชั่วโมง ซึ่งเท่ากับ 1 ทุก 2 วินาที ซึ่งเป็นค่าเพดานที่ต่ำกว่าขีดจำกัดการเขียนต่อนาทีที่สูงขึ้นในระยะสั้น

    การอัปเดตที่จะทำให้เกินขีดจำกัดนี้จะดำเนินการไม่สำเร็จทันที และจะตั้งค่า runtime.lastError เมื่อใช้ Callback หรือเมื่อมีการปฏิเสธ Promise

  • MAX_WRITE_OPERATIONS_PER_MINUTE

    120

    จำนวนการดำเนินการ set, remove หรือ clear สูงสุดที่ดำเนินการได้ในแต่ละนาที ซึ่งเท่ากับ 2 ต่อวินาที ซึ่งให้อัตราการส่งข้อมูลที่สูงกว่าการเขียนต่อชั่วโมงในระยะเวลาที่สั้น

    การอัปเดตที่จะทำให้เกินขีดจำกัดนี้จะดำเนินการไม่สำเร็จทันที และจะตั้งค่า runtime.lastError เมื่อใช้ Callback หรือเมื่อมีการปฏิเสธ Promise

  • QUOTA_BYTES

    102400

    จำนวนข้อมูลทั้งหมด (หน่วยเป็นไบต์) ที่สามารถจัดเก็บไว้ในพื้นที่เก็บข้อมูลที่ซิงค์ได้ ซึ่งวัดโดยสตริง JSON ของทุกค่าและความยาวของคีย์ทุกคีย์ การอัปเดตที่จะทำให้เกินขีดจำกัดนี้จะดำเนินการไม่สำเร็จทันที และจะตั้งค่า runtime.lastError เมื่อใช้ Callback หรือเมื่อมีการปฏิเสธ Promise

  • QUOTA_BYTES_PER_ITEM

    8192

    ขนาดสูงสุด (เป็นไบต์) ของแต่ละรายการในพื้นที่เก็บข้อมูลที่ซิงค์ ซึ่งวัดโดยการจัดเรียงสตริง JSON ของค่าและความยาวของคีย์ การอัปเดตที่มีรายการที่มีขนาดใหญ่กว่าขีดจำกัดนี้จะดำเนินการไม่สำเร็จทันทีและจะตั้งค่า runtime.lastError เมื่อใช้ Callback หรือเมื่อ Promise ถูกปฏิเสธ

กิจกรรม

onChanged

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

เริ่มทำงานเมื่อมีการเปลี่ยนแปลงอย่างน้อย 1 รายการ

พารามิเตอร์

  • Callback

    ฟังก์ชัน

    พารามิเตอร์ callback มีลักษณะดังนี้

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

    • การเปลี่ยนแปลง

      ออบเจ็กต์

    • areaName

      สตริง