我正在使用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!');
});
我检查后台页面时遇到的错误是“端口:无法建立连接。接收端不存在。”
对于可能出现问题的任何想法?谢谢!
答案 0 :(得分:7)
你可能只需要在发送消息之前等待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');
});
});
});