2012-03-18 39 views
3

我使用的Firefox插件Builder和這裏是我到目前爲止有:附加組件生成器:ContentScript並返回到插件代碼?

main.js:

var widgets = require("widget"); 
var tabs = require("tabs"); 
var data = require("self").data; 

var widget = widgets.Widget({ 
    id: "div-show", 
    label: "Show divs", 
    contentURL: "http://www.mozilla.org/favicon.ico", 
    onClick: function() { 
    tabs.activeTab.attach({ 
     contentScriptFile: [data.url("jquery.js"), data.url("myScript.js")] 
    }); 
    } 
}); 

myScript.js

var first = $(".avatar:first"); 
var url = first.attr("href"); 

現在我堅持如何讓url變量傳遞迴main.js,以便它可以在新選項卡中打開url。從myScript.js中,我無法訪問在main.js中聲明的tabs對象。

回答

1

當然! Attach方法返回您可以用它來建立一個事件處理程序一個工人實例:

// main.js 
var widgets = require("widget"); 
var tabs = require("tabs"); 
var data = require("self").data; 

var widget = widgets.Widget({ 
    id: "div-show", 
    label: "Show divs", 
    contentURL: "http://www.mozilla.org/favicon.ico", 
    onClick: function() { 
    var worker = tabs.activeTab.attach({ 
     contentScriptFile: [data.url("jquery.js"), data.url("myScript.js")] 
    }); 
    worker.port.on('got-url', function(data) { 
     tabs.open(data.url); 
    }); 
    } 
}); 

// myScript.js script: 
var first = $(".avatar:first"); 
var url = first.attr("href"); 
self.port.emit('got-url', {url: url}); 

更多相關信息,請參閱該文檔的附加方法:

https://addons.mozilla.org/en-US/developers/docs/sdk/1.5/packages/addon-kit/docs/tabs.html#attach%28options%29

...以及內容腳本指南:

https://addons.mozilla.org/en-US/developers/docs/sdk/1.5/dev-guide/addon-development/web-content.html

警告:沒有運行這段代碼,但它應該工作。

+0

如果我有工人的數組,我將如何做到這一點呢? – Funkafied 2012-03-19 03:36:37

+0

對不起,我不知道我是否知道你的意思?有一個代碼示例? – canuckistani 2012-03-19 04:37:45

+0

當然:'var workers = []; 每個(在windows.activeWindow.tabs VAR標籤){ workers.push(tab.attach({contentScriptFile:[data.url( 「的jquery.js」),data.url( 「myScript.js」)]} )); }'我怎麼做到這一點的時候,而不是'worker'我有工人的數組稱爲'workers'? – Funkafied 2012-03-19 04:56:15

相關問題