我的firefox插件中的main.js,page-mod的内容脚本和面板的内容脚本之间的消息传递出现了一些问题。我将chrome扩展代码传输到firefox插件。
这些js文件的加载顺序是什么?我试着想一想 使用控制台,但日志已刷新。
我已将chrome特定的API转移到firefox插件API,但我无法确定其他本机消息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.html
head
中的包含panel.js
个script
标记:
function addParentListener(){
window.addEventListener("message",function (e) {
var message=e.data;
if(message.type="some type"){
//do something
}
},false);
}
所以可以使用pm-content.js
将邮件从panel.js
发送到contentWindow.postMessage
? panel.js
使用window.addListener
来接收消息(来自panel.js
和pm-content.js
的示例代码是从chrome扩展代码中复制的,我不会更改它)?< / p>
相反,如何将msg从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);
}
我运行代码并且我收到很多错误。我应该更改这些消息代码以及如何?谢谢。
答案 0 :(得分:0)
加载这些js文件的顺序是什么?我试着用控制台搞清楚,但是日志会刷新。
使用网络面板而不是控制台
我已将chrome特定的API转移到firefox插件API,但我不能确定其他本机消息js代码应该更改。现在,我将向您展示示例。在main.js中:
使用或分析现有工具,如同类似问题: