小编Ned*_*rby的帖子

从 Chrome 扩展程序到网页的通信

我知道可以将消息从网页发送到 chrome 扩展程序并获得返回网页的正常响应,但反过来也可能吗?

我的问题“我需要能够将请求发送到网页并等待可以在扩展中使用的响应。也许不能使用 postMessage ?”

我知道文档说“只有网页可以发起连接”。(https://developer.chrome.com/extensions/messaging#external-webpage

这是我到目前为止所尝试过的。

背景.js

chrome.extension.sendMessage("Hello from extension to webpage");
window.postMessage("Hello from extension to webpage");
chrome.tabs.sendMessage(TAB_ID, "Hello from extension to webpage");
Run Code Online (Sandbox Code Playgroud)

webpage.js(不是扩展的一部分)

window.onmessage = (event) => {
  // Waiting for that message.
  console.info("Event received ", event);
}
window.chrome.runtime.connect(CHROME_EXTENSION_APP_ID).onMessage.addListener(function (){
  function(request, sender, sendResponse) {
     console.info("Event received from the extension", event);
  }
})  
Run Code Online (Sandbox Code Playgroud)

任何想法将不胜感激:)

javascript google-chrome google-chrome-extension

7
推荐指数
1
解决办法
8002
查看次数

使用PostMessage在Chrome-app和主页之间进行通信

我需要能够将Chrome应用程序中的postMessage通过webview发送到主页并返回.

我已经将Chrome应用程序中的PostMessage建立到主页,并且主页也捕获了PostMessage,并且发回了新的PostMessage,但Chrome应用程序未捕获此PostMessage回复.

我可以看到Chrome-App API上有可能:

访客将能够通过在收到的消息事件上向event.source发送消息来向嵌入者发送回复.

所以问题是我无法让Chrome应用程序从主页上收到回复,即使我使用event.source.postMessage('',event.origin)发送回复.是window.addEventListener('message',messageHandler,false); 在background.js结尾错了?

我在下面包含了我的代码:

background.js(初始化Chrome应用):

  var myAppWin = null;
  var webview = null;

chrome.app.runtime.onLaunched.addListener(function() {
  // Center window on screen.
  var screenWidth = screen.availWidth/2;
  var screenHeight = screen.availHeight;

  var chromeWindow = chrome.app.window.create('webview-embed.html', {
    id: "helloWorldID",
    bounds: {
      width: screenWidth,
      height: screenHeight,
    }
  }, function(win) {

        myAppWin = win;
        myAppWin.contentWindow.addEventListener('DOMContentLoaded', function() {

          webview = myAppWin.contentWindow.document.getElementById('webview');

          try{
            webview.addEventListener("contentload", function () {

              console.log("webview content is now loaded");

              try{
                console.log("Trying to post message");
                webview.contentWindow.postMessage("Message from Chrome APP!", "*");
              }catch(error){ …
Run Code Online (Sandbox Code Playgroud)

javascript postmessage webview google-chrome-app

5
推荐指数
1
解决办法
3675
查看次数