Не удается запустить уведомление из скрипта содержимого

#javascript #google-chrome-extension #notifications

#javascript #google-chrome-расширение #уведомления

Вопрос:

Я не могу запустить уведомление из моего расширения Chrome. Я знаю, что мы не можем запустить его непосредственно из скрипта содержимого, по этой причине у меня есть код уведомления в background.js файл. Но это все еще не работает. Мне нужна ваша помощь в выяснении того, как отображать уведомления из расширения Chrome.

Скрипт содержимого:

 {
  "name": "test",
  "version": "0.0.1",
  "manifest_version": 2,
  "description": "xdsfds",
  "author": "Miraj",
  "background": {
    "scripts" : ["background.js"],
    "persistent" : false
  },
  "content_scripts": [
    {
      "matches": ["https://google.com/*","file:///*/Desktop/extensionPage.html"],
       "js": ["/js/lib/jquery-3.1.1.min.js",
              "/js/lib/bootstrap.min.js",
              "/js/lib/angular.min.js",
              "/js/lib/idbstore.js",
              "/js/contentScript.js",
              "/js/angJs/main.js",
              "/js/angJs/communiqueService.js",
              "/js/angJs/commTrackerDir.js"],
         "css": ["/css/sforce.css",
               "/css/main.css"]
    }
  ],
  "web_accessible_resources": [
    "/templates/*"
  ],
  "permissions": [
     "cookies",
     "unlimitedStorage",
   "notifications"
  ]
}
  

Background.js

 chrome.extension.onMessage.addListener(
    function(request, sender, sendResponse) {
        alert('i am listening'); //this is getting invoked

        var opt = {
            type: "basic",
            title: "Primary Title",
            message: "Primary message to display",
            iconUrl: '/images/notification.png'
        };
        chrome.notifications.create(new Date().getTime(), opt, function(rs){
            alert(rs);
        });

        sendResponse({returnMsg: "All good!"}); // optional response
    });
  

ContentScript.js

 chrome.extension.sendMessage({msg: "Sup?"}, function(response) {
    // optional callback - gets response
    console.log(response);
});
  

Комментарии:

1. Вы подтвердили, что ваше уведомление срабатывает, когда оно находится вне extension.onMessage прослушивателя? Что вы видите в консоли фоновой страницы расширения?

2. Почему вы используете chrome.extension.onMessage / sendMessage ? Я бы ожидал, что вы будете использовать chrome.runtime.onMessage .

Ответ №1:

Первым аргументом для chrome.notifications.create должна быть строка. new Date().getTime() возвращает целое число. Вы могли бы использовать "" new Date().getTime() для преобразования его в строку.