2012-12-09 24 views
2

我正在寫一個Firefox插件,它使用context-menupage-mod模塊。爲什麼頁面模組中的onAttach沒有在Firefox附加sdk中執行?

當上下文是輸入控件時,此插件將新菜單項添加到上下文菜單。當單擊菜單項時,我向服務器請求獲取一些數據並將結果推送到page-mod正在使用的內容腳本。

由於某種原因,onAttach函數沒有被調用。控制檯中沒有錯誤。我不知道爲什麼它沒有被調用。這是我正在做的。

var data = require("self").data, 
    contextMenu = require("context-menu"), 
    request = require("request").Request; 

var workers = []; 
var pageMod = require("page-mod"); 
pageMod.PageMod({ 
    include: '*', 
    contentScriptWhen: 'ready', 
    contentScriptFile: [data.url("jquery-1.8.2.min.js"), data.url("varnam.js")], 
    onAttach: function(worker) { 
     console.log("onAttach"); 
     workers.push(worker); 
     worker.on("detach", function() { 
      var index = workers.indexOf(worker); 
      if (index >= 0) workers.splice(index, 1); 
     }); 
    } 
}); 

任何幫助解決這個問題將是偉大的。完整密碼可用here

回答

8

當url模式以星號開頭(或者只是一個星號)時,那麼它將使用http,httpsftp的方案與網址進行匹配。

由於您的測試頁在數據目錄中,因此其URL方案爲resource。這就是爲什麼PageMod沒有被觸發。

你可以做這樣的事情

var varnam = pageMod.PageMod({ 
// blah blah 
}); 

varnam.include.add(data.url("test.html")); 
+0

完美添加測試頁面的URL。謝謝您的幫助。現在工作正常。謝謝您的幫助。 –

相關問題