基本的谷歌浏览器扩展消息传递不起作用

时间:2013-12-05 19:16:22

标签: javascript google-chrome google-chrome-extension

我一直在尝试为Chrome扩展程序传递消息,但是console.log(响应)给了我undefined。我已经查看了消息传递和stackoverflow的文档,但在我的情况下它将无法正常工作。我不知道为什么。

myscript.js:

chrome.extension.sendRequest({greeting: "hello"}, function(response) {
    console.log(response);
    return true;
});

background.js:

chrome.runtime.onMessage.addListener(
   function(request, sender, sendResponse) {
      sendResponse({farewell: "goodbye"});
      return true;
 });

的manifest.json

{
  "manifest_version": 2,

  "name": "nameasf",
  "description": "asfasaf",
  "version": "1.0",

  "permissions": [
    "tabs",
    "http://somedomain.com/"
  ],

    "content_scripts": [
    {
      "matches": ["http://somedomain.com/*"],
      "css": ["mystyles.css"],
      "js": ["jquery.js", "myscript.js"],
      "all_frames": true
    }
  ],

  "background": {
    "scripts": ["background.js"]
  },

  "browser_action": {
    "default_icon": "icon.png",
    "default_popup": "popup.html"
  }
}

1 个答案:

答案 0 :(得分:0)

您使用的是过时的 chrome.extension.sendRequest 请改用 chrome.runtime.sendMessage

(注意:您已使用新的 chrome.runtime.onMessage ,因此您无需在侦听器方面进行任何更改。)


几个旁注:

  • 对于此处提供的代码,您不需要任何权限(尤其不是强大的tabs权限)。
  • 最好尽可能使用非持久性背景页面(又名 event-pages ),因为它们对资源更加友好。 < / LI>