Bookmarks.sys.mjs

用于管理书签的异步 API。书签以树状结构组织,包括 URL、文件夹和分隔符。允许存在多个指向相同 URL 的书签。为了能够使用“重做”和“撤销”,Firefox UI 视图没有直接使用 API,而是使用 PlacesTransactions

结构

每个书签项都由一个对象表示,该对象具有以下属性

  • guid (string) - 项的全局唯一标识符

  • parentGuid (string) - 包含该项的文件夹的全局唯一标识符。对于书签根文件夹,它将是一个空字符串。根文件夹用户无法访问,它仅包含其他根,如工具栏、菜单、未归档、移动

  • index (number) - 项在父文件夹中的基于零的位置

  • dateAdded (Date) - 添加项的时间

  • lastModified (Date) - 最后修改项的时间

  • type (number) - 项的类型,可以是 TYPE_BOOKMARKTYPE_FOLDERTYPE_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 表示,也称为 GuidGuid 帮助我们在数据库中定位我们的书签,进行更改、移动、复制或删除。

  • 创建新书签。当我们将书签项插入书签树时,我们需要设置一个 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