Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Chrome Extension Cannot Read Property create of undefined in contextMenus.create

This is my contextMenus.create function which is throwing the cannot read property of create in undefined error.

chrome.contextMenus.create({
   "title": "Buzz This",
   "contexts": ["page", "selection", "image", "link"],
   "onclick" : clickHandler
   });

I also have this in the same content script:

chrome.contextMenus.onClicked.addListener(onClickHandler);

// The onClicked callback function.
function onClickHandler(info, tab) {
     window.alert(info.srcUrl);    
};

This is my manifest.json

{
  "name": "ReportIt",
  "version": "0.0.1",
  "manifest_version": 2,

  "default_locale": "en",
  "description": "Immediately Remove and Report",
  "icons": {
   "16": "images/icon-128.png",
   "128": "images/icon-128.png"
   },


   "content_scripts": [{
    "matches": ["<all_urls>"],
    "js": ["scripts/contentscript.js"],
    "run_at": "document_end",
    "all_frames": false
    }],

      "permissions": [
      "http://*/*",
      "https://*/*",
      "contextMenus"
      ],

      "content_security_policy": "script-src 'self'; object-src 'self'",
      "web_accessible_resources": 
      [
      "bower_components/angular/*",
      "scripts/background.js"
      ]

    }

All I want to do is create a context menu in a content script. Can anyone see the problem?

like image 364
Dave Gordon Avatar asked May 31 '15 00:05

Dave Gordon


1 Answers

You cannot use most chrome apis in content scripts. Instead, create a background page and create the context menu there when it receives a message from the content script. When the background page receives the click event, send a message to the content script.

https://developer.chrome.com/extensions/messaging

like image 94
Daniel Herr Avatar answered Oct 16 '22 10:10

Daniel Herr