показывать уведомления в расширении chrome


Я пишу свое первое расширение 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 10

1 ответ:

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

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

Уведомление Chrome

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

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

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

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

Если вы все же решите пойти этим путем, вот вопрос, который может помочь: chrome extension content scripts custom ui