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時刪除內容腳本中的偵聽器,因此每次打開面板時都會重新開始。
感謝您的幫助,但我怕比我不能這樣做,你發表意見weakmap事情。我做了Chrome擴展,但Firefox版本是抵制的。 – Natiaz
firefox支持弱地圖 – the8472