Desktop notifications from content scripts

血红的双手。 提交于 2020-01-12 02:08:20

问题


I am trying to show a simple desktop notification code from a content script, but it doesn't seem to work.. I have added the permissions in the maifest.json file. Is there a restriction on showing them from the content script ?


回答1:


Yes, notifications use Chrome specific API, and the content script is only valid for general javascript etc... The background page is where all chrome specific API's are capable of running... First you'll need to register your background page in the manifest.json file - like this:

 "background_page": "background.html",

Also in the manifest file, Allow the required permissions:

"permissions": [ "notifications" ],

Then your script in the background page should look like this :

<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>



回答2:


You can't show notifications directly through a content script. But, you can show them through the background page.

You manifest.js should look something like this:

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

Then use the chrome.extension.sendRequest():

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

And on the receiving end you should have a onRequest listener:

// 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
  });


来源:https://stackoverflow.com/questions/3536621/desktop-notifications-from-content-scripts

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!