Показать уведомления в chrome extension

Я пишу свое первое расширение Chrome. В моем расширении Chrome я добавил опцию в контекстном меню правого клика.

chrome.contextMenus.create({
  "id": "MyExntesion",
  "title": "My Extension",
  "type": "normal",
  "contexts": ["image"],
  "onclick": this.handleClick
});

В моем методе handleClick я хочу показать уведомление. Это уведомление должно появиться в верхнем правом углу окна браузера, которое только подтверждает, что пользователь нажал на контекстное меню. Как мне это сделать?

Я провел некоторое исследование, но не нашел ничего полезного. https://developer.chrome.com/extensions/notifications это говорит об уведомлении в системном трее, где https://developer.chrome.com/extensions/browserAction#method-setPopup позволяет создавать новые всплывающие окна, но они отображаются только при нажатии на значок расширения.

Ответ 1

Существует три основных способа отображения уведомлений в Chrome.

1) Вышеупомянутый chrome.notifications API. Он покажет тост (не просто указание на systray), но вы, как разработчик, мало что можете сказать о том, как это выглядит. Обзор использования здесь.

Chrome notification

2) Стандартный HTML API уведомлений. В Chrome выглядит аналогично chrome.notifications, за исключением меньшего контроля над форматированием и не управляется центром уведомлений Chrome. Обзор использования здесь.

3) Если вы действительно хотите контролировать то, как он показывается, самый инвазивный и сложный способ - внедрить ваш пользовательский интерфейс во все страницы с помощью скрипта контента.

Если вы сделаете это, вы столкнетесь с несколькими проблемами:

  • В общем, сложнее спроектировать пользовательский интерфейс самостоятельно;
  • Пользовательский интерфейс будет ограничен окном просмотра веб-страницы;
  • CSS может кровоточить со страницы и портить ваш пользовательский интерфейс (хотя Shadow DOM может быть ответом);
  • Вам нужны общие разрешения для "данных на всех веб-страницах", чтобы показать ваш пользовательский интерфейс. Это пугает пользователей.

Тем не менее, если вы решите пойти по этому пути, вот вопрос, который может помочь: Сценарии содержимого Chrome с пользовательским интерфейсом