Настольные уведомления из контент-скриптов - PullRequest
6 голосов
/ 21 августа 2010

Я пытаюсь показать простой код уведомления на рабочем столе из скрипта содержимого, но он не работает .. Я добавил разрешения в файл maifest.json.Есть ли ограничение на их отображение из скрипта контента?

Ответы [ 2 ]

9 голосов
/ 31 мая 2011

Вы не можете показывать уведомления напрямую через контент-скрипт. Но вы можете показать их через фоновую страницу.

Вы manifest.js должны выглядеть примерно так:

{
 "name": "Notify This",
 "version": "0.1",
 "permissions": [
    "notifications"
 ],
 "background_page": "background.html",
 "content_scripts": [
   {
    "matches": ["http://www.example.com/*"],
    "js": ["contentscript.js"]
   }
 ]
}

Затем используйте chrome.extension.sendRequest () :

// in your contentscript.js
chrome.extension.sendRequest({msg: "Sup?"}, function(response) { // optional callback - gets response
    console.log(response.returnMsg);
});

А на приемном конце у вас должен быть onRequest слушатель:

// in your background.html
    chrome.extension.onRequest.addListener(
  function(request, sender, sendResponse) {

        // Create a simple text notification:
    var notify = webkitNotifications.createNotification(
      '48.png',  // icon url - can be relative
      'Hello!',  // notification title
      request.msg  // notification body text
    );

    notify.show();

    setTimeout(function(){ notify.cancel(); },5000);
    sendResponse({returnMsg: "All good!"}); // optional response
  });
2 голосов
/ 21 августа 2010

Да, в уведомлениях используется API, специфичный для Chrome, а скрипт содержимого действителен только для общего JavaScript и т. Д. ... фоновая страница - это то место, где могут работать все API, специфичные для Chrome ... Вам нужно зарегистрировать вашу фоновую страницу в файле manifest.json - например,

 "background_page": "background.html",

Также в файле манифеста, разрешите необходимые разрешения:

"permissions": [ "notifications" ],

Тогда ваш скрипт на фоновой странице должен выглядеть так:

<script>
setTimeout("setNotification();",1); 
function setNotification(){
  var n
  if (window.webkitNotifications.checkPermission() != 0){
    setNotification();
    return false;
  }
n = window.webkitNotifications.createHTMLNotification('http://www.your-notification-address.com');
n.show();}
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...