0

在我的扩展中,我在 chrome.bookmarks.onRemoved 事件上有一个监听器。

当我的监听器被调用时,它传递了一个父级和一个索引,而不是已删除书签的图像。我想不通的是如何找出删除了哪个书签?

4

2 回答 2

1

喜讯。

chrome.bookmarks.onRemoved回调具有“节点”参数。它包括已删除书签节点的详细信息。

您可以从 Chrome canary 版本 48.0.2529.0 使用它。

于 2015-09-06T17:04:46.340 回答
0

您不能使用chrome.bookmarks.getAPI 来获取已删除的书签,因为它已被删除。我能想到的唯一解决方案是保留完整书签树的副本,并搜索已删除书签的 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
于 2013-10-13T10:24:45.563 回答