2015-05-29 49 views
2

我正在開發一個firefox擴展,其中包含一些選項以與de當前選項卡DOM進行交互。 當您選擇一個選項時,當鼠標移動到結束位置時,活動選項卡的DOM中的所有元素都會被高亮顯示,並且當您單擊一個元素時,我想根據面板中選擇的選項觸發不同的操作。 我已經完成了它的工作,但是當你選擇一個選項,然後選擇其他的內容腳本「opt」時,變量就具有這兩個值。與DOM交互的Firefox擴展

main.js

panel.port.on('select', function(sel){ 
attachScript(sel); 
panel.hide(); 
}); 

function attachScript(selected) 
{ 
    var worker = tabs.activeTab.attach({ 
    contentScriptFile: [self.data.url("js/jquery-1.11.3.min.js"), self.data.url("js/content.js")] 
    }); 

    worker.port.emit('option', selected); 
} 

content.js

var opt = ''; 

self.port.on('option', function(option){ 
$('body').off('click', '.activelem',controlClick); 
if (option) 
{ 
    $('body').on('click', '.activelem', controlClick); 
    opt = option;  
    window.addEventListener('mousemove', handler);  
} 
}); 

我的問題:

  • 比我得到的面板選項中選擇並執行attachScript功能,腳本每次注射,還是第一次?
  • 我是否需要設置port.once來注入腳本,然後使用正常的port.on?如果是這樣,每次我如何與內容腳本進行通信?
  • 如何在每次按下ActionButton時刪除內容腳本中的偵聽器,因此每次打開面板時都會重新開始。

回答

2

比我得到的面板選項中選擇並執行attachScript功能時,都會腳本注入

我是否需要設置一個port.once到注入腳本,然後使用正常的port.on?如果是這樣,每次我如何與內容腳本進行通信?

你應該跟蹤哪些標籤已經一個工人連接,一個weakmap是適合於該目的

如何刪除聽者的內容腳本按每個比ActionButton時間,所以每次開啓面板時都會有新的開始。

嘗試destroy荷蘭國際集團的工人

+0

感謝您的幫助,但我怕比我不能這樣做,你發表意見weakmap事情。我做了Chrome擴展,但Firefox版本是抵制的。 – Natiaz

+0

firefox支持弱地圖 – the8472