2

main.js完整代碼:worker.port.on沒有得到事件

const data = require("self").data; 
const pageMod = require("page-mod"); 
pageMod.PageMod({ 
    include: "*", 
    contentScriptFile: data.url("addButtons.js"), 
    onAttach: function(worker) { 
     worker.port.on("testEvent", function(name) { 
      window.alert(name); 
     }); 
    } 
}); 

addButtons.js,提取物:

<...> 
var img=document.createElement("img"); 
img.setAttribute('src', '...');     
    img.onclick=function() { 
      var name='printMe'; 
      self.port.emit("testEvent", name); 
     // window.alert(name); 
     } 
<...> 

的目標是通過點擊來IMG從addButton.js發送事件main.js和以參數顯示警報。如果我在addButton.js中取消對線//window.alert(name);的註釋 - 我會得到警報,即onclick功能正常工作。但上面描述的代碼並不顯示警報或控制檯中的任何錯誤。 我已閱讀所有有關文檔,但它沒有幫助。

回答

1

事件發送正常 - 只是在您的擴展中沒有window,因此沒有window.alert()(如果通過按Ctrl-Shift-J打開錯誤控制檯,您應該會看到此錯誤)。您只能在內容腳本中使用window.alert(),因爲它們已連接到網頁,在擴展模塊中,您應該使用console.log()代替。

+0

是的,控制檯的作品,非常感謝 – gvidik 2012-03-27 09:09:56

+0

@gvidik:如果它解決了您的問題,隨時接受答案。請參閱http://stackoverflow.com/faq#howtoask。 – 2012-03-27 09:32:05

+0

@gvidik,值得注意的是,在main.js中,默認情況下,沒有一個普通文檔apis可用。 – canuckistani 2012-03-27 19:21:41