Chrome扩展开发如何将书签存储在根文件夹外或绕过根目录修改限制
问题原因
Chrome 书签体系存在几个受系统保护的根级文件夹,包括「书签栏」「其他书签」「移动设备书签」,这些是chrome.bookmarks.getTree()返回的根节点的直接子节点,Chrome 明确禁止修改、删除这类系统保留节点,你当前的代码直接遍历根节点的所有子节点执行删除操作,刚好命中了这个限制,才会抛出报错。
解决方案
- 该限制是 Chrome 安全策略的强制要求,没有任何绕过方法,不允许对根级保留文件夹执行增删改操作。
- 如果你的需求是删除所有普通书签/自定义文件夹,只需要在操作前跳过系统保留的根文件夹即可,修改后的代码参考如下:
chrome.bookmarks.getTree(function(bookmarks) { // 遍历根节点下的所有一级子节点(即系统保留根文件夹) bookmarks.forEach(rootNode => { rootNode.children?.forEach(reservedFolder => { // 只删除系统保留文件夹内部的内容,不操作保留文件夹本身 reservedFolder.children?.forEach(child => { chrome.bookmarks.remove(child.id); }) }) }) })
- 如果需要引导用户存储自定义书签,直接引导用户把书签存在「书签栏」或者「其他书签」内部的自定义文件夹里即可,所有用户自行创建的文件夹、书签都允许任意修改,不会触发权限报错。
内容的提问来源于stack exchange,提问作者MadMisty
相关产品推荐
相关产品推荐

