【发布时间】:2011-02-05 02:16:40
【问题描述】:
我设置了一个 Google Chrome 扩展程序,它可以创建用户书签的上下文菜单。由于 ContextMenus API 必须通过后台页面实现,因此我添加了以下事件侦听器以在用户书签发生任何更改时更新上下文菜单:
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()
});
它在大多数情况下都有效,但我遇到了一个我无法解决如何杀死的错误。也就是说,如果我同时更改多个书签(例如,通过在书签管理器中选择多个项目并重新排列它们),脚本会同时触发多次,我最终会得到上下文菜单的多个实例。
任何人都可以就如何解决这个问题提供任何建议吗?
【问题讨论】:
标签: javascript google-chrome contextmenu bookmarks