编程语言
首页 > 编程语言> > javascript – Chrome打包应用程序 – 从background.js传递到另一个脚本页面的消息

javascript – Chrome打包应用程序 – 从background.js传递到另一个脚本页面的消息

作者:互联网

我正在使用AngularJS制作Chrome Packaged应用程序,我只是尝试将我的后台脚本(“runtime.js”)中的消息发送到我项目中的另一个javascript文件.

的manifest.json

  {
      "name": "App Name",
      "description": "Chrome Packaged",
      "version": "0.0.9",
      "manifest_version": 2,
      "icons": {
        "16": "img/icon16.png",
        "48": "img/icon48.png",
        "128":"img/icon128.png"
      },
      "app": {
        "background": {
          "scripts": ["runtime.js"]
        }
      },
      "permissions": [
        "alarms",
        "storage",
        "unlimitedStorage",
        "notifications",
        "app.runtime"
      ]
    }

runtime.js

chrome.app.runtime.onLaunched.addListener(function() {
    chrome.app.window.create('index.html', {
    minWidth: 400,
    minHeight: 700,
    bounds: {
        width: 1000,
        height: 700
    }
    });    
});

chrome.runtime.sendMessage({message: "hello"}, function() {
    console.log('sent')
});

main.js

chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
    console.log('message received!');
});

我检查后台页面时遇到的错误是“端口:无法建立连接.接收端不存在”.

可能是什么问题的任何想法?谢谢!

解决方法:

在发送消息之前,您可能只需要等待index.html(我假设是拉入main.js)进行加载.但是,您实际上可以通过从chrome.app.window.create返回的窗口对象进行直接函数调用,而不是发送消息.

chrome.app.runtime.onLaunched.addListener(function() {
    chrome.app.window.create('index.html', {
        minWidth: 400,
        minHeight: 700,
        bounds: {
            width: 1000,
            height: 700
        }
    }, function (myWindow) {
        myWindow.contentWindow.addEventListener('load', function(e) {
            myWindow.contentWindow.functionFromMainJs('hello');
        });
    });    
});

标签:javascript,angularjs,google-chrome,google-chrome-app
来源: https://codeday.me/bug/20190612/1227200.html