在我的扩展中,我在 chrome.bookmarks.onRemoved 事件上有一个监听器。
当我的监听器被调用时,它传递了一个父级和一个索引,而不是已删除书签的图像。我想不通的是如何找出删除了哪个书签?
在我的扩展中,我在 chrome.bookmarks.onRemoved 事件上有一个监听器。
当我的监听器被调用时,它传递了一个父级和一个索引,而不是已删除书签的图像。我想不通的是如何找出删除了哪个书签?
您不能使用chrome.bookmarks.get
API 来获取已删除的书签,因为它已被删除。我能想到的唯一解决方案是保留完整书签树的副本,并搜索已删除书签的 id。一个天真的实现是:
var bookmarks = [];
function updateBookmarks()
{
chrome.bookmarks.getTree(function(results) { bookmarks = results; });
}
updateBookmarks();
chrome.bookmarks.onRemoved.addListener(function(id, removeInfo)
{
console.log("Removed bookmark");
console.log(findBookmarkWithId(bookmarks, id));
updateBookmarks();
});
function findBookmarkWithId(bookmarks, id)
{
if (bookmarks === null || typeof bookmarks === "undefined")
return null;
for (var i = 0; i < bookmarks.length; i++)
{
if (bookmarks[i].id === id)
return bookmarks[i];
var child = findBookmarkWithId(bookmarks[i].children, id)
if (child !== null)
return child;
}
return null;
}
// keep local copy up to date
chrome.bookmarks.onCreated.addListener(function(id, bookmark)
{
updateBookmarks();
});
chrome.bookmarks.onChanged.addListener(function(id, bookmark)
{
updateBookmarks();
});
// TO DO: deal with chrome.bookmarks.onImportBegan / onImportEnd