Я работаю над простым расширением для обмена ссылками (пинборд, удобочитаемость, вкуснота и т. д.), и у меня есть вопрос о том, как правильно работать с пунктом контекстного меню. На моей непостоянной фоновой странице я вызываю chrome.contextMenus.create
и chrome.contextMenus.onClicked.addListener
для настройки/ответа на контекстное меню.
Пункт контекстного меню работает как положено. Но на фоновой странице отображается следующая ошибка (сразу после ее запуска и до того, как я использовал запись):
contextMenus.create: Cannot create item with duplicate id id_share_link at chrome-extension://.../share.js:52:30 lastError:29 set
Это заставило меня понять, что я ни в коем случае не удаляю элемент или слушателя. Мало зная о javascript и расширениях, мне остается только гадать, правильно ли я все делаю. Я предполагаю, что этот код верхнего уровня будет выполняться повторно каждый раз, когда вызывается фоновая страница. Таким образом, будут избыточные вызовы create и addListener (и, следовательно, ошибка, которую я вижу в журнале).
Я явно не могу выполнить очистку в ответ на приостановку, так как эти вызовы должны присутствовать, чтобы разбудить фоновый скрипт.
Должен ли я вести себя по-другому?