gpt4 book ai didi

javascript - 如何将消息从内容脚本发送到面板?

转载 作者:行者123 更新时间:2023-11-28 09:00:00 27 4
gpt4 key购买 nike

我的 firefox 插件中的 main.js、page-mod 的内容脚本和面板的内容脚本之间的消息传递存在一些问题。我将 chrome 扩展代码传输到 firefox 插件。

  1. 这些js文件加载的顺序是怎样的?我试着弄清楚控制台输出,但日志已刷新。

  2. 我已将 chrome 特定 API 转移到 firefox addon API,但我不确定其他 native 消息 js 代码是否应该更改。现在,我将向您展示示例。在 main.js 中:

    var pmworker = []
    var pagemod = PageMod({
    include: ['*'],
    contentScriptWhen: 'start',
    contentScriptFile: [data.url('pm-content.js')],
    onAttach: function(worker) {
    worker.port.on('message',
    function(data) {
    switch (data.type) {
    case 'some type':
    do something;
    break;
    }
    });
    worker.on('detach',function() {
    detachWorker(this, pmworker);
    });
    pmworker.push(worker);
    }
    });


    var panel = require("sdk/panel").Panel({
    width: 322,
    height: 427,
    contentURL: data.url("panel.html"),
    include:["http://*/*","https://*/*"]
    });

    panel.on('message', function(messagedata) {
    switch(messagedata.type) {
    case 'some type':
    panel.port.emit("something");
    break;
    }
    });

pm-content.js中:

var sendInfoToFrame = function(){
var frameWindow = document.getElementById(iframeId).contentWindow;
var infoMsg = {type:"some type",content:something};
frameWindow.postMessage(infoMsg, "*");
}

panel.htmlhead 中包含一个带有 script 标记的 panel.js:

function addParentListener(){
window.addEventListener("message",function (e) {
var message=e.data;
if(message.type="some type"){
//do something
}
},false);
}

那么消息可以使用 contentWindow.postMessagepm-content.js 发送到 panel.js 吗?并且 panel.js 使用 window.addListener 接收消息(这些示例代码来自 panel.jspm-content。 js是从chrome扩展代码复制的,我没有更改它)?

相反,消息是如何从panel.js发送到内容脚本的?我也从chrome复制了相同的代码,但我不知道它是否正确。示例代码是:在 panel.js 中:

function sendSomeMessage(value){
var message = {type : "sometp",value: value};
window.parent.postMessage(message, "*");
}

以及pm-content.js中的接收代码:

   function addMessageListener() {
window.addEventListener("message",function(e) {
var message = e.data;
if (message.type == null) {
return;
}
var msgType = message.type;
switch (msgType) {
case "sometp":
//do something
}
}, false);
}

我运行代码并收到很多错误。那么我应该更改这些消息传递代码以及如何更改?谢谢。

最佳答案

What is the order of these js files loaded? I try to figure out with console,but the log is refreshed.

使用网络面板而不是控制台

I have transfer the chrome specific API to firefox addon API,but I can't sure the other native message js code should change.Now,I will show you the example. in main.js:

使用或分析现有工具,如类似的问题:

Cross-Browser Extensions API?

关于javascript - 如何将消息从内容脚本发送到面板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17886791/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com