Я установил расширение Google Chrome, которое создает контекстное меню закладок пользователя.Поскольку API ContextMenus должен быть реализован через фоновую страницу, я добавил следующие прослушиватели событий для обновления контекстного меню, если есть какие-либо изменения в закладках пользователя:
chrome.bookmarks.onChildrenReordered.addListener(function () {
chrome.contextMenus.removeAll();
contextMenu()
});
chrome.bookmarks.onMoved.addListener(function () {
chrome.contextMenus.removeAll();
contextMenu()
});
chrome.bookmarks.onCreated.addListener(function () {
chrome.contextMenus.removeAll();
contextMenu()
});
chrome.bookmarks.onRemoved.addListener(function () {
chrome.contextMenus.removeAll();
contextMenu()
});
chrome.bookmarks.onImportEnded.addListener(function () {
chrome.contextMenus.removeAll();
contextMenu()
});
По большей части работает, но я столкнулся с одной ошибкой, которую я не могу понять, как убить.А именно, если я изменяю несколько закладок одновременно (например, выбирая несколько элементов в менеджере закладок и переставляя их), сценарий запускается несколько раз одновременно, и в результате я получаю несколько экземпляров контекстного меню.
Может кто-нибудь предложить какие-либо предложения, как решить эту проблему?