chrome.bookmarks

คำอธิบาย

ใช้ chrome.bookmarks API เพื่อสร้าง จัดระเบียบ และจัดการบุ๊กมาร์ก ดูหน้าการลบล้างด้วย ซึ่งคุณใช้สร้างหน้าการจัดการบุ๊กมาร์กที่กำหนดเองได้

การคลิกดาวจะเพิ่มบุ๊กมาร์ก
การคลิกดาวจะเป็นการเพิ่มบุ๊กมาร์ก

สิทธิ์

bookmarks

คุณต้องประกาศสิทธิ์ "บุ๊กมาร์ก" ในไฟล์ Manifest ของส่วนขยายเพื่อใช้ Bookmarks API เช่น

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

แนวคิดและการใช้งาน

ออบเจ็กต์และพร็อพเพอร์ตี้

ระบบจะจัดระเบียบบุ๊กมาร์กในโครงสร้างแบบต้นไม้ โดยแต่ละโหนดในโครงสร้างจะเป็นบุ๊กมาร์กหรือโฟลเดอร์ (บางครั้งเรียกว่ากลุ่ม) แต่ละโหนดในโครงสร้างจะแสดงด้วยออบเจ็กต์ bookmarks.BookmarkTreeNode

พร็อพเพอร์ตี้ BookmarkTreeNode ใช้ใน chrome.bookmarks API ทั้งหมด เช่น เมื่อเรียกใช้ bookmarks.create คุณจะส่งโฟลเดอร์หลักของโหนดใหม่ (parentId) และพร็อพเพอร์ตี้ index, title และ url ของโหนด (ไม่บังคับ) ดูข้อมูลเกี่ยวกับพร็อพเพอร์ตี้ที่โหนดมีได้ที่ bookmarks.BookmarkTreeNode

ตัวอย่าง

โค้ดต่อไปนี้จะสร้างโฟลเดอร์ที่มีชื่อว่า "บุ๊กมาร์กของส่วนขยาย" อาร์กิวเมนต์แรกของ create()ระบุพร็อพเพอร์ตี้สำหรับโฟลเดอร์ใหม่ อาร์กิวเมนต์ที่ 2 จะกำหนดฟังก์ชันที่จะ ดำเนินการหลังจากสร้างโฟลเดอร์

chrome.bookmarks.create(
  {'parentId': bookmarkBar.id, 'title': 'Extension bookmarks'},
  function(newFolder) {
    console.log("added folder: " + newFolder.title);
  },
);

ข้อมูลโค้ดถัดไปจะสร้างบุ๊กมาร์กที่ชี้ไปยังเอกสารประกอบสำหรับนักพัฒนาซอฟต์แวร์ของส่วนขยาย เนื่องจากจะไม่มีอะไรเกิดขึ้นหากสร้างบุ๊กมาร์กไม่สำเร็จ โค้ดนี้จึงไม่จำเป็นต้องกำหนดฟังก์ชันเรียกกลับ

chrome.bookmarks.create({
  'parentId': extensionsFolderId,
  'title': 'Extensions doc',
  'url': 'https://developer.chrome.com/docs/extensions',
});

หากต้องการลองใช้ API นี้ ให้ติดตั้งตัวอย่าง API บุ๊กมาร์กจากที่เก็บ chrome-extension-samples

ประเภท

BookmarkTreeNode

โหนด (ทั้งบุ๊กมาร์กหรือโฟลเดอร์) ในโครงสร้างบุ๊กมาร์ก ระบบจะจัดเรียงโหนดลูกในโฟลเดอร์ระดับบนสุด

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

  • เด็ก

    BookmarkTreeNode[] ไม่บังคับ

    รายการย่อยของโหนดนี้ที่มีการจัดลำดับ

  • dateAdded

    หมายเลข ไม่บังคับ

    เวลาที่สร้างโหนดนี้ในหน่วยมิลลิวินาทีนับตั้งแต่ Epoch (new Date(dateAdded))

  • dateGroupModified

    หมายเลข ไม่บังคับ

    เวลาที่เนื้อหาของโฟลเดอร์นี้มีการเปลี่ยนแปลงครั้งล่าสุดเป็นมิลลิวินาทีนับตั้งแต่ Epoch

  • dateLastUsed

    หมายเลข ไม่บังคับ

    Chrome 114 ขึ้นไป

    เวลาที่เปิดโหนดนี้ครั้งล่าสุดเป็นมิลลิวินาทีตั้งแต่ Epoch ไม่ได้ตั้งค่าสำหรับโฟลเดอร์

  • folderType

    FolderType ไม่บังคับ

    Chrome 134 ขึ้นไป

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

    โฟลเดอร์แต่ละประเภทอาจมี 0, 1 หรือหลายโหนด เบราว์เซอร์อาจเพิ่มหรือนำโฟลเดอร์ออกได้ แต่จะทำผ่าน API ของส่วนขยายไม่ได้

  • id

    สตริง

    ตัวระบุที่ไม่ซ้ำกันสำหรับโหนด รหัสจะไม่ซ้ำกันในโปรไฟล์ปัจจุบัน และจะยังคงใช้ได้แม้หลังจากรีสตาร์ทเบราว์เซอร์แล้ว

  • ดัชนี

    หมายเลข ไม่บังคับ

    ตำแหน่งที่อิงตาม 0 ของโหนดนี้ภายในโฟลเดอร์ระดับบน

  • parentId

    สตริง ไม่บังคับ

    id ของโฟลเดอร์หลัก ละเว้นสำหรับโหนดรูท

  • กำลังซิงค์

    บูลีน

    Chrome 134 ขึ้นไป

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

    หมายเหตุ: นี่แสดงว่ามีการบันทึกโหนดไปยังผู้ให้บริการบัญชีในตัวของเบราว์เซอร์หรือไม่ เป็นไปได้ที่โหนดอาจซิงค์ผ่านบุคคลที่สาม แม้ว่าค่านี้จะเป็นเท็จก็ตาม

    สำหรับโหนดที่มีการจัดการ (โหนดที่ตั้งค่า unmodifiable เป็น true) พร็อพเพอร์ตี้นี้จะเป็น false เสมอ

  • title

    สตริง

    ข้อความที่แสดงสำหรับโหนด

  • แก้ไขไม่ได้

    "managed"
     ไม่บังคับ

    ระบุสาเหตุที่แก้ไขโหนดนี้ไม่ได้ ค่า managed แสดงว่าผู้ดูแลระบบหรือผู้ดูแลผู้ใช้ภายใต้การควบคุมดูแลเป็นผู้กำหนดค่าโหนดนี้ ละเว้นหากผู้ใช้และส่วนขยายแก้ไขโหนดได้ (ค่าเริ่มต้น)

  • URL

    สตริง ไม่บังคับ

    URL ที่ระบบนำทางไปยังเมื่อผู้ใช้คลิกที่บุ๊กมาร์ก ละเว้นสำหรับโฟลเดอร์

BookmarkTreeNodeUnmodifiable

Chrome 44 ขึ้นไป

ระบุสาเหตุที่แก้ไขโหนดนี้ไม่ได้ managed ค่าจะระบุว่าผู้ดูแลระบบเป็นผู้กำหนดค่าโหนดนี้ ละเว้นหากผู้ใช้และส่วนขยายแก้ไขโหนดได้ (ค่าเริ่มต้น)

ค่า

"managed"

CreateDetails

ออบเจ็กต์ที่ส่งไปยังฟังก์ชัน create()

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

  • ดัชนี

    หมายเลข ไม่บังคับ

  • parentId

    สตริง ไม่บังคับ

    ค่าเริ่มต้นคือโฟลเดอร์บุ๊กมาร์กอื่นๆ

  • title

    สตริง ไม่บังคับ

  • URL

    สตริง ไม่บังคับ

FolderType

Chrome 134 ขึ้นไป

ระบุประเภทโฟลเดอร์

ค่าแจกแจง

"แถบบุ๊กมาร์ก"
โฟลเดอร์ที่มีเนื้อหาแสดงที่ด้านบนของหน้าต่างเบราว์เซอร์

"อื่นๆ"
บุ๊กมาร์กที่แสดงในรายการบุ๊กมาร์กทั้งหมดในทุกแพลตฟอร์ม

"mobile"
โดยทั่วไปบุ๊กมาร์กจะพร้อมใช้งานในอุปกรณ์เคลื่อนที่ของผู้ใช้ แต่สามารถแก้ไขได้โดยส่วนขยายหรือในเครื่องมือจัดการบุ๊กมาร์ก

"มีการจัดการ"
โฟลเดอร์ระดับบนสุดที่อาจมีอยู่หากผู้ดูแลระบบหรือผู้ดูแลผู้ใช้ภายใต้การควบคุมดูแลได้กำหนดค่าบุ๊กมาร์ก

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

MAX_SUSTAINED_WRITE_OPERATIONS_PER_MINUTE

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

Chrome จะไม่จำกัดการดำเนินการเขียนบุ๊กมาร์กอีกต่อไป

ค่า

1000000

MAX_WRITE_OPERATIONS_PER_HOUR

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

Chrome จะไม่จำกัดการดำเนินการเขียนบุ๊กมาร์กอีกต่อไป

ค่า

1000000

เมธอด

create()

chrome.bookmarks.create(
  bookmark: CreateDetails,
)
: Promise<BookmarkTreeNode>

สร้างบุ๊กมาร์กหรือโฟลเดอร์ภายใต้ parentId ที่ระบุ หาก URL เป็น NULL หรือไม่มีอยู่ จะถือว่าเป็นโฟลเดอร์

พารามิเตอร์

การคืนสินค้า

get()

chrome.bookmarks.get(
  idOrIdList: string | [string, ...string[]],
)
: Promise<BookmarkTreeNode[]>

เรียกข้อมูล BookmarkTreeNode ที่ระบุ

พารามิเตอร์

  • idOrIdList

    string | [string, ...string[]]

    รหัสสตริงค่าเดียวหรืออาร์เรย์ของรหัสสตริง

การคืนสินค้า

getChildren()

chrome.bookmarks.getChildren(
  id: string,
)
: Promise<BookmarkTreeNode[]>

ดึงข้อมูลบุตรหลานของ BookmarkTreeNode ที่ระบุ

พารามิเตอร์

  • id

    สตริง

การคืนสินค้า

getRecent()

chrome.bookmarks.getRecent(
  numberOfItems: number,
)
: Promise<BookmarkTreeNode[]>

ดึงข้อมูลบุ๊กมาร์กที่เพิ่มล่าสุด

พารามิเตอร์

  • numberOfItems

    ตัวเลข

    จำนวนสูงสุดของรายการที่จะแสดง

การคืนสินค้า

getSubTree()

chrome.bookmarks.getSubTree(
  id: string,
)
: Promise<BookmarkTreeNode[]>

ดึงข้อมูลส่วนหนึ่งของลำดับชั้นของบุ๊กมาร์ก โดยเริ่มที่โหนดที่ระบุ

พารามิเตอร์

  • id

    สตริง

    รหัสของรูทของโครงสร้างย่อยที่จะดึงข้อมูล

การคืนสินค้า

getTree()

chrome.bookmarks.getTree(): Promise<BookmarkTreeNode[]>

ดึงข้อมูลลำดับชั้นของบุ๊กมาร์กทั้งหมด

การคืนสินค้า

move()

chrome.bookmarks.move(
  id: string,
  destination: object,
)
: Promise<BookmarkTreeNode>

ย้าย BookmarkTreeNode ที่ระบุไปยังตำแหน่งที่ระบุ

พารามิเตอร์

  • id

    สตริง

  • ปลายทาง

    ออบเจ็กต์

    • ดัชนี

      หมายเลข ไม่บังคับ

    • parentId

      สตริง ไม่บังคับ

การคืนสินค้า

remove()

chrome.bookmarks.remove(
  id: string,
)
: Promise<void>

นำบุ๊กมาร์กหรือโฟลเดอร์บุ๊กมาร์กที่ว่างเปล่าออก

พารามิเตอร์

  • id

    สตริง

การคืนสินค้า

  • Promise<void>

    Chrome 90 ขึ้นไป

removeTree()

chrome.bookmarks.removeTree(
  id: string,
)
: Promise<void>

นำโฟลเดอร์บุ๊กมาร์กออกแบบเรียกซ้ำ

พารามิเตอร์

  • id

    สตริง

การคืนสินค้า

  • Promise<void>

    Chrome 90 ขึ้นไป
chrome.bookmarks.search(
  query: string | object,
)
: Promise<BookmarkTreeNode[]>

ค้นหา BookmarkTreeNodes ที่ตรงกับการค้นหาที่ระบุ การค้นหาที่ระบุด้วยออบเจ็กต์จะสร้าง BookmarkTreeNodes ที่ตรงกับพร็อพเพอร์ตี้ที่ระบุทั้งหมด

พารามิเตอร์

  • query

    string | object

    สตริงของคำและวลีที่ยกมาซึ่งตรงกับ URL และชื่อของบุ๊กมาร์ก หรือออบเจ็กต์ หากเป็นออบเจ็กต์ คุณจะระบุพร็อพเพอร์ตี้ query, url และ title ได้ และระบบจะสร้างที่คั่นหน้าที่ตรงกับพร็อพเพอร์ตี้ที่ระบุทั้งหมด

    • query

      สตริง ไม่บังคับ

      สตริงของคำและวลีที่ยกมาซึ่งตรงกับ URL และชื่อของบุ๊กมาร์ก

    • title

      สตริง ไม่บังคับ

      ชื่อของบุ๊กมาร์ก ตรงกันทุกประการ

    • URL

      สตริง ไม่บังคับ

      URL ของบุ๊กมาร์ก ตรงกันทุกประการ โปรดทราบว่าโฟลเดอร์ไม่มี URL

การคืนสินค้า

update()

chrome.bookmarks.update(
  id: string,
  changes: object,
)
: Promise<BookmarkTreeNode>

อัปเดตพร็อพเพอร์ตี้ของบุ๊กมาร์กหรือโฟลเดอร์ ระบุเฉพาะพร็อพเพอร์ตี้ที่ต้องการเปลี่ยนแปลง ส่วนพร็อพเพอร์ตี้ที่ไม่ได้ระบุจะไม่มีการเปลี่ยนแปลง หมายเหตุ: ปัจจุบันรองรับเฉพาะ "title" และ "url"

พารามิเตอร์

  • id

    สตริง

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

    ออบเจ็กต์

    • title

      สตริง ไม่บังคับ

    • URL

      สตริง ไม่บังคับ

การคืนสินค้า

กิจกรรม

onChanged

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

ทริกเกอร์เมื่อมีการเปลี่ยนแปลงบุ๊กมาร์กหรือโฟลเดอร์ หมายเหตุ: ปัจจุบันมีเพียงการเปลี่ยนแปลงชื่อและ URL เท่านั้นที่จะทริกเกอร์การดำเนินการนี้

พารามิเตอร์

  • callback

    ฟังก์ชัน

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

    (id: string, changeInfo: object) => void

    • id

      สตริง

    • changeInfo

      ออบเจ็กต์

      • title

        สตริง

      • URL

        สตริง ไม่บังคับ

onChildrenReordered

chrome.bookmarks.onChildrenReordered.addListener(
  callback: function,
)

ทริกเกอร์เมื่อลำดับของรายการในโฟลเดอร์เปลี่ยนแปลงเนื่องจากมีการจัดเรียงลำดับใน UI ฟังก์ชันนี้จะไม่ถูกเรียกใช้เป็นผลมาจากการเรียกใช้ move()

พารามิเตอร์

  • callback

    ฟังก์ชัน

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

    (id: string, reorderInfo: object) => void

    • id

      สตริง

    • reorderInfo

      ออบเจ็กต์

      • childIds

        string[]

onCreated

chrome.bookmarks.onCreated.addListener(
  callback: function,
)

เริ่มทำงานเมื่อมีการสร้างบุ๊กมาร์กหรือโฟลเดอร์

พารามิเตอร์

  • callback

    ฟังก์ชัน

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

    (id: string, bookmark: BookmarkTreeNode) => void

onImportBegan

chrome.bookmarks.onImportBegan.addListener(
  callback: function,
)

เริ่มทำงานเมื่อมีการเริ่มเซสชันการนำเข้าบุ๊กมาร์ก Observer ที่มีค่าใช้จ่ายสูงควรละเว้นการอัปเดต onCreated จนกว่าจะมีการเรียกใช้ onImportEnded อย่างไรก็ตาม ผู้สังเกตการณ์ควรจัดการการแจ้งเตือนอื่นๆ ทันที

พารามิเตอร์

  • callback

    ฟังก์ชัน

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

    () => void

onImportEnded

chrome.bookmarks.onImportEnded.addListener(
  callback: function,
)

เริ่มทำงานเมื่อเซสชันการนำเข้าบุ๊กมาร์กสิ้นสุดลง

พารามิเตอร์

  • callback

    ฟังก์ชัน

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

    () => void

onMoved

chrome.bookmarks.onMoved.addListener(
  callback: function,
)

ทริกเกอร์เมื่อมีการย้ายบุ๊กมาร์กหรือโฟลเดอร์ไปยังโฟลเดอร์ระดับบนสุดอื่น

พารามิเตอร์

  • callback

    ฟังก์ชัน

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

    (id: string, moveInfo: object) => void

    • id

      สตริง

    • moveInfo

      ออบเจ็กต์

      • ดัชนี

        ตัวเลข

      • oldIndex

        ตัวเลข

      • oldParentId

        สตริง

      • parentId

        สตริง

onRemoved

chrome.bookmarks.onRemoved.addListener(
  callback: function,
)

ทริกเกอร์เมื่อมีการนำบุ๊กมาร์กหรือโฟลเดอร์ออก เมื่อนำโฟลเดอร์ออกแบบเรียกซ้ำ ระบบจะส่งการแจ้งเตือนเดียวสำหรับโฟลเดอร์นั้น และจะไม่ส่งการแจ้งเตือนสำหรับเนื้อหาของโฟลเดอร์

พารามิเตอร์

  • callback

    ฟังก์ชัน

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

    (id: string, removeInfo: object) => void

    • id

      สตริง

    • removeInfo

      ออบเจ็กต์

      • ดัชนี

        ตัวเลข

      • โหนด
        Chrome 48 ขึ้นไป
      • parentId

        สตริง