在我的擴展中,我有一個關於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
非常感謝。我開始感覺到chrome.bookmarks。* API是爲了阻止開發人員編寫書籤擴展而創建的。我現在已經花了1天的時間編寫我的代碼,並且花了4天的時間與API戰鬥。 – pinoyyid