Не удается получить уведомления для работы с расширением Google Chrome - PullRequest
0 голосов
/ 08 марта 2020

Я пишу расширение Google Chrome, но не могу заставить работать chrome уведомления.
Цель (по крайней мере, для целей тестирования): отображать уведомление, когда пользователь нажимает на значок расширения в правом верхнем углу.
Что происходит: при нажатии на значок расширения отображается только текст «Тестовое тело» из popup.html, но нет уведомлений. Осматривая консоль на предмет расширения, я вижу результат функции обратного вызова: Last error: undefined.
РЕДАКТИРОВАТЬ: Я пытался использовать Google Notification API для проверки функциональности, и он также, похоже, не Работа. Эта ссылка говорит об ошибке в уведомлениях Chrome, поэтому я волнуюсь, что это может быть проблемой. Будем благодарны за любые комментарии об ошибке.
Вот мой код:
manifest. json:

{
  "name": "Test Extension",
  "description": "Test description",
  "version": "1.0",
  "manifest_version": 2,
  "icons": { "16": "images/icon16.png", "48": "images/icon48.png", "128": "images/icon128.png" },
  "content_scripts": [
    {
      "matches": ["*://*.amazon.com/*buy*"],
      "js": ["js/content.js"]
    }
  ],
  "browser_action": {
    "default_popup": "html/popup.html",
    "default_title": "Test Extension"
  },
  "background": {
    "scripts": ["js/background.js"]
  },
  "permissions": [
    "notifications"
  ],
  "web_accessible_resources": ["images/icon48.png"]
}

popup. html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Nubank Credit Control</title>
</head>
<body>
    <p>Test body</p>
    <script src="../js/popup.js"></script>
</body>
</html>

содержание. js:

chrome.runtime.sendMessage({
    url: window.location.href
});

фон. js:

chrome.runtime.onMessage.addListener(function () {
    const options = {
        type: "basic",
        iconUrl: chrome.extension.getURL("../images/icon48.png"),
        title: "This is the title",
        message: "This is the main message of the notification",
    };

    chrome.notifications.create("notifId", options, function() {console.log("Last error:", chrome.runtime.lastError);});
});

Ответы [ 2 ]

0 голосов
/ 08 марта 2020

На самом деле, уведомления могут быть вызваны во всплывающем окне. js также. Насколько я вижу, проблема в том, как вы вызываете chrome .notifications.create (). Первый параметр является необязательным, но если вы все же хотите передать его, это должен быть действительный идентификатор уведомления, а не просто «notifId».

Для целей тестирования этого должно быть достаточно:

manifest. json

{
  "name": "Test Extension",
  "description": "Test description",
  "version": "1.0",
  "manifest_version": 2,
  "browser_action": {
    "default_popup": "html/popup.html",
    "default_title": "Test Extension"
  },
  "permissions": [
    "notifications"
  ]
}

всплывающее окно. js

const options = {
    type: "basic",
    iconUrl: "../images/icon48.png",
    title: "Popup.js",
    message: "Hello from popup.js!"
};

chrome.notifications.create(options);

Или, в случае использования фона. js:

манифест. json

{
  "name": "Test Extension",
  "description": "Test description",
  "version": "1.0",
  "manifest_version": 2,
  "browser_action": {
    "default_title": "Test Extension"
  },
  "background": {
    "scripts": ["js/background.js"]
  },
  "permissions": [
    "notifications"
  ]
}

фон. js

const options = {
  type: "basic",
  iconUrl: "../images/icon48.png",
  title: "Background.js",
  message: "Hello from background.js!"
};

chrome.browserAction.onClicked.addListener(function (){
  chrome.notifications.create(options);
});
0 голосов
/ 08 марта 2020

API-интерфейс chrome .notification доступен только в фоновом контексте, полное решение см. В { ссылка }.

...