user2650277
user2650277

Reputation: 6739

Message passing from external webpage to chrome addon

I am trying to make a webpage send data to a chrome extension that will fire when user visit a website(say google here)

manifest.json

{
  "manifest_version": 2,
  "name": "Test Addon",
  "version": "0.01",
  "icons": { "16": "icon-16.ico" },

  "browser_action": {
  "default_icon" : "icon-16.ico",
  "default_popup" : "popup.html"
  },

   "content_scripts": [
    {
      "matches": ["*://*.google.com/*"  ],
      "js": ["cs.js"]
    }
  ],

  "externally_connectable": {
  "matches": ["*://*.mywebsite.com/*"]
}


}

cs.js

chrome.runtime.onMessageExternal.addListener(
  function(request, sender, sendResponse) {
    alert("world");
  });

mywebsite.com/testpage.php

// The ID of my chrome extension (In developer mode)
var editorExtensionId = "cjgeckgdpfhnedenpkaanpehddchlkle";

// Send a message
chrome.runtime.sendMessage("Hello");

</script>

As far as i know content script have access to onMessage and sendMessage but i don't get an alert when i visit google

Upvotes: 0

Views: 131

Answers (1)

Dmitri Pavlutin
Dmitri Pavlutin

Reputation: 19130

According to the docs, the extension id should be the first parameter when calling sendMessage(). You simply omitted this param.
The second problem is that messages from external web page can receive only the background script. Check the docs for onMessageExternal().
Use this code to send a message to your background extension script:

// The ID of my chrome extension (In developer mode)
var editorExtensionId = "cjgeckgdpfhnedenpkaanpehddchlkle";

// Send a message
chrome.runtime.sendMessage(editorExtensionId, "Hello");

Upvotes: 1

Related Questions