2013-06-04 18 views
1

我現在想提出一個Firefox擴展的Firefox上添加SDK,我試圖無濟於事內容的腳本(頁MOD)和彈出(面板)之間的通信之間的通信。內容的腳本(頁MOD)和彈出(圖)

我使用toolbar button由Erik Vold的。這裏是我的代碼:

var tbb = require('toolbarbutton').ToolbarButton({ 
    id: 'from-us_button', 
    label: 'from-us', 
    image: data.url('img/on.png'), 
    panel: panel 

}); 

var pageMod = require('page-mod').PageMod({ 
    include: "*", 
    contentScriptFile: [ 
    data.url('recuperation.js') 
    ], 
    contentScriptWhen : "end", 
    attachTo: ["existing", "top"] 

}); 


var panel = require('panel').Panel({ 
    width: 200, 
    height: 500, 
    contentURL: data.url('popup.html') 

}); 

我popup.html包含:

<script type="text/javascript" src="popup.js"></script> 

我想通過從recuperation.js到popup.js一個變量,我怎麼能這樣做呢?

回答

1

你需要popup.js連接到您的面板:

var panel = require('panel').Panel({ 
    ... 
    contentURL: data.url('popup.html'), 
    contentScriptFile: require("self").data.url("popup.js") //or data.url() if you already have it set 
}); 

腳本加載通過<script>標籤缺乏必要的權限才能使用self.port。從recuperation.js

var panel = ... 
... 
require('page-mod').PageMod({ 
    include: "*", 
    contentScriptFile: [ 
    data.url('recuperation.js') 
    ], 
    contentScriptWhen : "end", 
    attachTo: ["existing", "top"], 
    onAttach: function(worker){ 
    worker.port.on("recuperation-to-panel",function(msg){ 
     panel.port.emit("recuperation-to-panel",msg); 
    });  
    } 
}); 

然後:

self.port.emit("recuperation-to-panel",msg); 

*編輯:

然後一個監聽器添加到您的網頁-MOD worker並轉達給您的面板,像這樣它應該是worker.port.on;不是pageMod.port.on。抱歉。

+0

謝謝你的迴應,但我有一個錯誤:「pageMod.port is undefined」。 – seb68

+0

@ seb68:Ooops,它應該是'worker.port.on';而不是'pageMod.port.on'。固定。 – jongo45

+0

謝謝。我仍然有一個錯誤:「msg未定義」。在recuperation.js,我有'無功味精= 「你好」;' – seb68