我的firefox插件中的main.js,page-mod的內容腳本和麪板的內容腳本之間的消息傳遞存在一些問題。我將Chrome擴展代碼傳遞給firefox插件。如何從內容腳本向面板發送消息?
加載這些js文件的順序是什麼?我試圖用控制檯計算出 ,但日誌已刷新。
我已經將Chrome特定的API傳遞給firefox addon 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);
}
所以該消息可以b e從pm-content.js
發送到panel.js
與contentWindow.postMessage
?而panel.js
使用window.addListener
來接收味精(這些示例代碼從panel.js
和pm-content.js
是從鉻擴展代碼複製,我不會改變它)?
相反,信息從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);
}
我運行代碼,我得到很多errors.So的我應該改變這些消息傳遞代碼和如何?謝謝。