简体   繁体   English

在附加SDK主附加脚本和sdk / page-worker脚本之间进行通信

[英]Communicate between Add-on SDK main add-on script and sdk/page-worker script

I'm trying to communicate between my main Add-on SDK script, index.js , and a script in a page-worker created with sdk/page-worker . 我正在尝试在主要的附加SDK脚本index.js和使用sdk/page-worker创建的page-worker中的脚本之间进行通信。 Unfortunately, I am having problems. 不幸的是,我遇到了问题。

I am able to communicate from my main script to the page-worker: In the code below, I get an event from socket.on - console.log('new post') fires from the script in the page-worker. 我能够从主脚本与页面工作人员进行通信:在下面的代码中,我从socket.on获取了一个事件socket.on console.log('new post')从页面工作人员中的脚本触发。 However, the main add-on script does not see the message that is sent from the page-worker. 但是,主附加脚本看不到页面工作人员发送的消息。

HTML ( worker.html ): 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>

to index.js file: 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
});

In worker.html , I had to change self.port.emit to: addon.port.emit . worker.html中 ,我必须将self.port.emit更改为: addon.port.emit

Because I used a script in my HTML file within a <script> tag, I have to communicate with the main add-on script through the addon object. 因为我在HTML文件中的<script>标记内使用了脚本,所以我必须通过addon对象与主附加脚本进行通信。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM