我正在尝试在我的主要附加SDK脚本 index.js 和使用sdk/page-worker
创建的页面工作者中的脚本之间进行通信。不幸的是,我遇到了问题。
我能够从我的主脚本与页面工作者进行通信:在下面的代码中,我从页面工作者的脚本中获取了来自socket.on
- console.log('new post')
的事件。但是,主加载项脚本不会看到从页面工作者发送的消息。
HTML( worker.html ):
<html lang="pl">
<head>
<meta charset="UTF-8">
<script src="https://cdn.socket.io/socket.io-1.3.5.js"></script>
<script type="text/javascript">
var socket = io.connect('http://192.168.0.21:8081');
socket.on('newPost', function(data) {
console.log("new post");
//to this everything works ok!!!!!!!!!!!!
self.port.emit('newPost', "");
});
</script>
</head>
<body>
</body>
</html>
到 index.js 文件:
var buttons = require('sdk/ui/button/action');
var functions = require('./module.js');
var pageWorkers = require("sdk/page-worker");
var notifications = require('sdk/notifications');
var self = require("sdk/self");
functions.act.checkMsgsCount();
var pageWorker = pageWorkers.Page({
contentScriptWhen: "ready",
contentURL: self.data.url("worker.html")
});
pageWorker.port.on('newPost', function(data) {
console.log("sent newPost");
functions.act.newPostNotify();
});
buttons.ActionButton({
id: "main-bt",
label: "Start",
icon: {
"16" : "./icon-16.png",
"32" : "./icon-32.png",
"64" : "./icon-64.png"
},
onClick: functions.act.checkMsgsCount
});
答案 0 :(得分:2)
在 worker.html 中,我必须将self.port.emit
更改为:addon.port.emit
。
因为我在<script>
标记内的HTML文件中使用了脚本,所以我必须通过addon
对象与主要的加载项脚本进行通信。