页面和扩展程序之间的通信

时间:2018-04-24 17:12:03

标签: google-chrome google-chrome-extension google-chrome-devtools

我开发了我的第一个chrome扩展程序。

我尝试从我的default_popup调用该页面。

我尝试使用chrome.runtime.onMessage.addListenerchrome.runtime.sendMessage,但这不起作用。

我读了这页https://developer.chrome.com/apps/messaging,但我无法弄清楚我的Listiner的正确位置。

我需要在打开“默认弹出窗口”时,在页面中调用一个事件并将某些内容返回到页面上的“default_popup”。

更多解释:

实际上我在这个content.js中有一个content.js我可以通过调用chrome.runtime.sendMessage来调用background.js,但是它调用了fast。

页面的DOM没有时间加载。我的content.js在网页中注入一些.js文件以与页面进行交互。

有没有办法可以从注入的页面调用crhome.extension.sendMessage?

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

好的,我找到了。

我们可以在background.js中注册一个事件

chrome.runtime.onMessageExternal.addListener(
 function (request, sender, sendResponse) {
   debugger;
   if (sender.url == blacklistedWebsite)
     return;  // don't allow this web page access
   if (request.openUrlInEditor)
     openUrl(request.openUrlInEditor);
 });

你需要在清单中加入正确的规则

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

在您注入的页面之后:

    chrome.runtime.sendMessage(extensionID, { openUrlInEditor: "test" },
  function (response) {
    debugger;
    if (!response.success)
      handleError("est");
  });