Mô tả
Sử dụng API chrome.bookmarks để tạo, sắp xếp và thao tác với dấu trang. Ngoài ra, hãy xem phần Trang ghi đè mà bạn có thể dùng để tạo trang Trình quản lý dấu trang tuỳ chỉnh.
Quyền
bookmarksBạn phải khai báo quyền "bookmarks" trong tệp kê khai tiện ích để sử dụng API dấu trang. Ví dụ:
{
"name": "My extension",
...
"permissions": [
"bookmarks"
],
...
}
Khái niệm và cách sử dụng
Đối tượng và thuộc tính
Dấu trang được sắp xếp theo dạng cây, trong đó mỗi nút trong cây là một dấu trang hoặc một thư mục (đôi khi được gọi là nhóm). Mỗi nút trong cây được biểu thị bằng một đối tượng bookmarks.BookmarkTreeNode.
Các thuộc tính BookmarkTreeNode được dùng trong toàn bộ API browser.bookmarks. Ví dụ: khi gọi bookmarks.create, bạn truyền vào nút mẹ của nút mới (parentId) và các thuộc tính index, title và url của nút (không bắt buộc). Hãy xem bookmarks.BookmarkTreeNode để biết thông tin về các thuộc tính mà một nút có thể có.
Ví dụ
Mã sau đây tạo một thư mục có tiêu đề "Dấu trang tiện ích". Đối số đầu tiên của create() chỉ định các thuộc tính cho thư mục mới. Đối số thứ hai xác định một hàm sẽ được thực thi sau khi thư mục được tạo.
browser.bookmarks.create(
{'parentId': bookmarkBar.id, 'title': 'Extension bookmarks'},
function(newFolder) {
console.log("added folder: " + newFolder.title);
},
);
Đoạn mã tiếp theo sẽ tạo một dấu trang trỏ đến tài liệu dành cho nhà phát triển về tiện ích. Vì sẽ không có gì xấu xảy ra nếu việc tạo dấu trang không thành công, nên mã này không cần xác định hàm callback.
browser.bookmarks.create({
'parentId': extensionsFolderId,
'title': 'Extensions doc',
'url': 'https://developer.chrome.com/docs/extensions',
});
Để dùng thử API này, hãy cài đặt Ví dụ về API Dấu trang từ kho lưu trữ chrome-extension-samples.
Loại
BookmarkTreeNode
Một nút (dấu trang hoặc thư mục) trong cây dấu trang. Các nút con được sắp xếp trong thư mục mẹ.
Thuộc tính
-
trẻ em
BookmarkTreeNode[] không bắt buộc
Danh sách theo thứ tự của các phần tử con của nút này.
-
dateAdded
number không bắt buộc
Thời điểm nút này được tạo, tính bằng mili giây kể từ thời gian bắt đầu của hệ thống (
new Date(dateAdded)). -
dateGroupModified
number không bắt buộc
Thời điểm nội dung của thư mục này thay đổi gần đây nhất, tính bằng mili giây kể từ thời điểm bắt đầu.
-
dateLastUsed
number không bắt buộc
Chrome 114 trở lên browser.* kể từ Chrome 148Thời điểm gần đây nhất nút này được mở, tính bằng mili giây kể từ thời gian bắt đầu của hệ thống. Không đặt cho thư mục.
-
folderType
FolderType không bắt buộc
Chrome 134 trở lên browser.* kể từ Chrome 148Nếu có, đây là thư mục do trình duyệt thêm vào và người dùng hoặc tiện ích không thể sửa đổi. Các nút con có thể được sửa đổi nếu nút này không có thuộc tính
unmodifiable. Bỏ qua nếu người dùng và tiện ích có thể sửa đổi nút (mặc định).Có thể không có, có một hoặc nhiều nút cho mỗi loại thư mục. Trình duyệt có thể thêm hoặc xoá một thư mục, nhưng không thể thực hiện thông qua API tiện ích.
-
id
chuỗi
Giá trị nhận dạng riêng biệt của nút. Mã nhận dạng là duy nhất trong hồ sơ hiện tại và vẫn có hiệu lực ngay cả sau khi trình duyệt được khởi động lại.
-
index
number không bắt buộc
Vị trí dựa trên 0 của nút này trong thư mục mẹ.
-
parentId
chuỗi không bắt buộc
idcủa thư mục mẹ. Bỏ qua đối với nút gốc. -
đang đồng bộ hoá
boolean
Chrome 134 trở lên browser.* kể từ Chrome 148Liệu nút này có được trình duyệt đồng bộ hoá với bộ nhớ tài khoản từ xa của người dùng hay không. Bạn có thể dùng thuộc tính này để phân biệt giữa phiên bản tài khoản và phiên bản chỉ dành cho địa phương của cùng một
FolderType. Giá trị của thuộc tính này có thể thay đổi đối với một nút hiện có, chẳng hạn như do hành động của người dùng.Lưu ý: điều này cho biết nút có được lưu vào nhà cung cấp tài khoản tích hợp sẵn của trình duyệt hay không. Có thể một nút được đồng bộ hoá thông qua bên thứ ba, ngay cả khi giá trị này là false.
Đối với các nút được quản lý (nút có
unmodifiableđược đặt thànhtrue), thuộc tính này sẽ luôn làfalse. -
tiêu đề
chuỗi
Văn bản hiển thị cho nút.
-
không thể sửa đổi
"managed"
không bắt buộcCho biết lý do không thể sửa đổi nút này. Giá trị
managedcho biết nút này do quản trị viên hệ thống hoặc người giám hộ của người dùng được giám sát định cấu hình. Bỏ qua nếu người dùng và tiện ích có thể sửa đổi nút (mặc định). -
url
chuỗi không bắt buộc
URL được chuyển đến khi người dùng nhấp vào dấu trang. Bỏ qua đối với thư mục.
BookmarkTreeNodeUnmodifiable
Cho biết lý do không thể sửa đổi nút này. Giá trị managed cho biết nút này do quản trị viên hệ thống định cấu hình. Bỏ qua nếu người dùng và tiện ích có thể sửa đổi nút (mặc định).
Giá trị
"managed"
CreateDetails
Đối tượng được truyền đến hàm create().
Thuộc tính
-
index
number không bắt buộc
-
parentId
chuỗi không bắt buộc
Theo mặc định, dấu trang sẽ được lưu vào thư mục Dấu trang khác.
-
tiêu đề
chuỗi không bắt buộc
-
url
chuỗi không bắt buộc
FolderType
Cho biết loại thư mục.
Enum
"bookmarks-bar"
Thư mục có nội dung xuất hiện ở đầu cửa sổ trình duyệt.
"other"
Dấu trang xuất hiện trong danh sách đầy đủ các dấu trang trên mọi nền tảng.
"mobile"
Dấu trang thường có trên thiết bị di động của người dùng, nhưng có thể sửa đổi bằng tiện ích hoặc trong trình quản lý dấu trang.
"managed"
Thư mục cấp cao nhất có thể xuất hiện nếu quản trị viên hệ thống hoặc người giám hộ của người dùng được giám sát đã định cấu hình dấu trang.
Thuộc tính
MAX_SUSTAINED_WRITE_OPERATIONS_PER_MINUTE
Chrome không còn giới hạn các thao tác ghi dấu trang nữa.
Giá trị
1000000
MAX_WRITE_OPERATIONS_PER_HOUR
Chrome không còn giới hạn các thao tác ghi dấu trang nữa.
Giá trị
1000000
ROOT_NODE_ID
id liên kết với nút cấp gốc.
Giá trị
"0"
Phương thức
create()
browser.bookmarks.create(
bookmark: CreateDetails,
): Promise<BookmarkTreeNode>
Tạo dấu trang hoặc thư mục trong parentId được chỉ định. Nếu url là NULL hoặc bị thiếu, thì đó sẽ là một thư mục.
Thông số
-
đánh dấu trang
Giá trị trả về
-
Promise<BookmarkTreeNode>
Trình duyệt Chrome 90 trở lên .* kể từ Chrome 148
get()
browser.bookmarks.get(
idOrIdList: string | [string, ...string[]],
): Promise<BookmarkTreeNode[]>
Truy xuất(các) BookmarkTreeNode được chỉ định.
Thông số
-
idOrIdList
string | [string, ...string[]]
Một mã nhận dạng có giá trị chuỗi hoặc một mảng mã nhận dạng có giá trị chuỗi
Giá trị trả về
-
<Promise<BookmarkTreeNode[]>
Trình duyệt Chrome 90 trở lên .* kể từ Chrome 148
getChildren()
browser.bookmarks.getChildren(
id: string,
): Promise<BookmarkTreeNode[]>
Truy xuất các phần tử con của mã BookmarkTreeNode đã chỉ định.
Thông số
-
id
chuỗi
Giá trị trả về
-
<Promise<BookmarkTreeNode[]>
Trình duyệt Chrome 90 trở lên .* kể từ Chrome 148
getRecent()
browser.bookmarks.getRecent(
numberOfItems: number,
): Promise<BookmarkTreeNode[]>
Truy xuất các dấu trang được thêm gần đây.
Thông số
-
numberOfItems
số
Số lượng mục tối đa cần trả về.
Giá trị trả về
-
<Promise<BookmarkTreeNode[]>
Trình duyệt Chrome 90 trở lên .* kể từ Chrome 148
getSubTree()
browser.bookmarks.getSubTree(
id: string,
): Promise<BookmarkTreeNode[]>
Truy xuất một phần của hệ phân cấp Dấu trang, bắt đầu từ nút được chỉ định.
Thông số
-
id
chuỗi
Mã nhận dạng của gốc của cây con cần truy xuất.
Giá trị trả về
-
<Promise<BookmarkTreeNode[]>
Trình duyệt Chrome 90 trở lên .* kể từ Chrome 148
getTree()
browser.bookmarks.getTree(): Promise<BookmarkTreeNode[]>
Truy xuất toàn bộ hệ thống phân cấp Dấu trang.
Giá trị trả về
-
<Promise<BookmarkTreeNode[]>
Trình duyệt Chrome 90 trở lên .* kể từ Chrome 148
move()
browser.bookmarks.move(
id: string,
destination: object,
): Promise<BookmarkTreeNode>
Di chuyển BookmarkTreeNode đã chỉ định đến vị trí được cung cấp.
Thông số
-
id
chuỗi
-
tài khoản đích
đối tượng
-
index
number không bắt buộc
-
parentId
chuỗi không bắt buộc
-
Giá trị trả về
-
Promise<BookmarkTreeNode>
Trình duyệt Chrome 90 trở lên .* kể từ Chrome 148
remove()
browser.bookmarks.remove(
id: string,
): Promise<void>
Xoá dấu trang hoặc thư mục dấu trang trống.
Thông số
-
id
chuỗi
Giá trị trả về
-
Promise<void>
Trình duyệt Chrome 90 trở lên .* kể từ Chrome 148
removeTree()
browser.bookmarks.removeTree(
id: string,
): Promise<void>
Xoá thư mục dấu trang theo cách đệ quy.
Thông số
-
id
chuỗi
Giá trị trả về
-
Promise<void>
Trình duyệt Chrome 90 trở lên .* kể từ Chrome 148
search()
browser.bookmarks.search(
query: string | object,
): Promise<BookmarkTreeNode[]>
Tìm kiếm BookmarkTreeNodes khớp với truy vấn đã cho. Các truy vấn được chỉ định bằng một đối tượng sẽ tạo ra BookmarkTreeNodes khớp với tất cả các thuộc tính được chỉ định.
Thông số
-
truy vấn
string | object
Một chuỗi từ và cụm từ được trích dẫn khớp với URL và tiêu đề dấu trang hoặc một đối tượng. Nếu là một đối tượng, thì bạn có thể chỉ định các thuộc tính
query,urlvàtitle, đồng thời các dấu trang khớp với tất cả thuộc tính đã chỉ định sẽ được tạo.-
truy vấn
chuỗi không bắt buộc
Một chuỗi từ và cụm từ trong dấu ngoặc kép được so khớp với URL và tiêu đề của dấu trang.
-
tiêu đề
chuỗi không bắt buộc
Tiêu đề của dấu trang; khớp nguyên văn.
-
url
chuỗi không bắt buộc
URL của dấu trang; khớp nguyên văn. Xin lưu ý rằng thư mục không có URL.
-
Giá trị trả về
-
<Promise<BookmarkTreeNode[]>
Trình duyệt Chrome 90 trở lên .* kể từ Chrome 148
update()
browser.bookmarks.update(
id: string,
changes: object,
): Promise<BookmarkTreeNode>
Cập nhật các thuộc tính của dấu trang hoặc thư mục. Chỉ chỉ định những thuộc tính mà bạn muốn thay đổi; các thuộc tính không được chỉ định sẽ không thay đổi. Lưu ý: Hiện tại, chúng tôi chỉ hỗ trợ "title" và "url".
Thông số
-
id
chuỗi
-
các thay đổi
đối tượng
-
tiêu đề
chuỗi không bắt buộc
-
url
chuỗi không bắt buộc
-
Giá trị trả về
-
Promise<BookmarkTreeNode>
Trình duyệt Chrome 90 trở lên .* kể từ Chrome 148
Sự kiện
onChanged
browser.bookmarks.onChanged.addListener(
callback: function,
)
Được kích hoạt khi một dấu trang hoặc thư mục thay đổi. Lưu ý: Hiện tại, chỉ những thay đổi về tiêu đề và URL mới kích hoạt tính năng này.
Thông số
-
callback
hàm
Tham số
callbackcó dạng như sau:(id: string, changeInfo: object) => void
-
id
chuỗi
-
changeInfo
đối tượng
-
tiêu đề
chuỗi
-
url
chuỗi không bắt buộc
-
-
onChildrenReordered
browser.bookmarks.onChildrenReordered.addListener(
callback: function,
)
Được kích hoạt khi các mục con của một thư mục thay đổi thứ tự do thứ tự được sắp xếp trong giao diện người dùng. Hàm này không được gọi do kết quả của move().
Thông số
-
callback
hàm
Tham số
callbackcó dạng như sau:(id: string, reorderInfo: object) => void
-
id
chuỗi
-
reorderInfo
đối tượng
-
childIds
string[]
-
-
onCreated
browser.bookmarks.onCreated.addListener(
callback: function,
)
Được kích hoạt khi một dấu trang hoặc thư mục được tạo.
Thông số
-
callback
hàm
Tham số
callbackcó dạng như sau:(id: string, bookmark: BookmarkTreeNode) => void
-
id
chuỗi
-
đánh dấu trang
-
onImportBegan
browser.bookmarks.onImportBegan.addListener(
callback: function,
)
Được kích hoạt khi bắt đầu một phiên nhập dấu trang. Các trình quan sát tốn kém nên bỏ qua các bản cập nhật onCreated cho đến khi onImportEnded được kích hoạt. Người quan sát vẫn nên xử lý ngay các thông báo khác.
Thông số
-
callback
hàm
Tham số
callbackcó dạng như sau:() => void
onImportEnded
browser.bookmarks.onImportEnded.addListener(
callback: function,
)
Được kích hoạt khi một phiên nhập dấu trang kết thúc.
Thông số
-
callback
hàm
Tham số
callbackcó dạng như sau:() => void
onMoved
browser.bookmarks.onMoved.addListener(
callback: function,
)
Được kích hoạt khi một dấu trang hoặc thư mục được di chuyển sang một thư mục mẹ khác.
Thông số
-
callback
hàm
Tham số
callbackcó dạng như sau:(id: string, moveInfo: object) => void
-
id
chuỗi
-
moveInfo
đối tượng
-
index
số
-
oldIndex
số
-
oldParentId
chuỗi
-
parentId
chuỗi
-
-
onRemoved
browser.bookmarks.onRemoved.addListener(
callback: function,
)
Được kích hoạt khi một dấu trang hoặc thư mục bị xoá. Khi một thư mục bị xoá đệ quy, một thông báo duy nhất sẽ được kích hoạt cho thư mục đó và không có thông báo nào cho nội dung của thư mục đó.
Thông số
-
callback
hàm
Tham số
callbackcó dạng như sau:(id: string, removeInfo: object) => void
-
id
chuỗi
-
removeInfo
đối tượng
-
index
số
-
nútChrome 48 trở lên browser.* kể từ Chrome 148
-
parentId
chuỗi
-
-