Bookmarks.sys.mjs¶
用于管理书签的异步 API。书签以树状结构组织,包括 URL、文件夹和分隔符。允许存在多个指向相同 URL 的书签。为了能够使用“重做”和“撤销”,Firefox UI 视图没有直接使用 API,而是使用 PlacesTransactions。
结构¶
每个书签项都由一个对象表示,该对象具有以下属性
guid (string)
- 项的全局唯一标识符
parentGuid (string)
- 包含该项的文件夹的全局唯一标识符。对于书签根文件夹,它将是一个空字符串。根文件夹用户无法访问,它仅包含其他根,如工具栏、菜单、未归档、移动
index (number)
- 项在父文件夹中的基于零的位置
dateAdded (Date)
- 添加项的时间
lastModified (Date)
- 最后修改项的时间
type (number)
- 项的类型,可以是TYPE_BOOKMARK
、TYPE_FOLDER
或TYPE_SEPARATOR
以下属性仅对 URL 或文件夹有效
title (string)
- 项的标题(如果存在)。空标题和 null 标题被视为相同。长度超过DB_TITLE_LENGTH_MAX
的标题将被截断
以下属性仅对 URL 有效
url (URL, href 或 nsIURI)
- 项的 URL。请注意,虽然输入对象可以包含 URL 对象、href 字符串或 nsIURI,但输出对象始终包含 URL 对象。URL 的长度不能超过DB_URL_LENGTH_MAX
,如果提供更长的值,方法将抛出异常。
主要功能¶
每个书签都有一个全局唯一标识符,由
string
表示,也称为Guid
。Guid
帮助我们在数据库中定位我们的书签,进行更改、移动、复制或删除。创建新书签。当我们将书签项插入书签树时,我们需要设置一个 parentGuid 属性,该属性是书签将位于其中的部分,例如 - 工具栏 (
"toolbar_____"
)。位置可以是任何其他文件夹 guid,或特殊的根文件夹 guid,例如
rootGuid:
"root________"
menuGuid:
"menu________"
toolbarGuid:
"toolbar_____"
unfiledGuid:
"unfiled_____"
mobileGuid:
"mobile______"
此外,您还需要指定书签类型(例如,对于单个书签,使用
TYPE_BOOKMARK
,对于文件夹,使用TYPE_FOLDER
)。删除书签。要删除一个或多个书签项,您需要指定
guidOrInfo
。这可以是书签 guid、表示项的对象或表示项的数组。您可以指定删除选项 - 在尝试删除非空文件夹时抛出异常,并将更改源转发到所有书签观察者。(默认源指向 nsINavBookmarksService::SOURCE_DEFAULT)。删除书签会返回一个 promise,该 promise 可以:在完成后被解析,如果没有任何匹配的书签要删除,则被拒绝。获取有关书签项的信息。即使可能存在多个书签(例如,按 url 获取),对该方法的任何成功调用也会解析为单个书签项(或 null)。如果您希望检索给定匹配的所有书签,则需要使用回调。获取书签的输入可以是 guid 或具有一个过滤属性的对象(例如,
url
- 检索具有给定 URL 的最新书签)。获取返回 promise,该 promise 在完成时解析,如果在获取过程中发生任何错误则拒绝,如果任何指定的参数无效则抛出错误。
每个成功的操作都会通过 PlacesObservers Observers 接口通知。
包含每个方法的实际 javadoc 和描述的完整文件 - Bookmarks.sys.mjs