如何识别已删除的书签

时间:2013-10-11 19:06:51

标签: google-chrome-extension

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

当我的侦听器被调用时,它会传递父和索引,而不是已删除书签的图像。我无法弄清楚的是如何找出哪个书签被删除?

2 个答案:

答案 0 :(得分:1)

快乐新闻。

chrome.bookmarks.onRemoved回调有'节点' PARAM。它包括删除的书签节点的详细信息。

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

答案 1 :(得分:0)

您无法使用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