Javascript 与DOM交互的Firefox扩展
我正在开发一个firefox扩展,它有一个选项面板,可以与当前的DOM选项卡交互。 当您选择一个选项时,当鼠标在上方时,活动选项卡的DOM中的所有元素都是高位的,当您单击一个元素时,我希望根据面板中选择的选项触发不同的操作。 我已经让它工作了,但是当您选择一个选项,然后选择其他选项时,内容脚本“opt”变量具有这两个值 main.jsJavascript 与DOM交互的Firefox扩展,javascript,jquery,firefox-addon,firefox-addon-sdk,Javascript,Jquery,Firefox Addon,Firefox Addon Sdk,我正在开发一个firefox扩展,它有一个选项面板,可以与当前的DOM选项卡交互。 当您选择一个选项时,当鼠标在上方时,活动选项卡的DOM中的所有元素都是高位的,当您单击一个元素时,我希望根据面板中选择的选项触发不同的操作。 我已经让它工作了,但是当您选择一个选项,然后选择其他选项时,内容脚本“opt”变量具有这两个值 main.js panel.port.on('select', function(sel){ attachScript(sel); panel.hide(); }); fu
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);
}
});
我的问题是:
- 每次我选择panel选项并执行attachScript函数时,脚本都会被注入,还是第一次被取消
- 我是否需要设置一个port.once来注入脚本,然后使用一个普通的port.on?如果是这样的话,我如何每次都与内容脚本通信
- 如何在每次按下ActionButton之后删除内容脚本中的侦听器,以便每次打开面板都是一个新的开始
试着给工人打电话谢谢你的帮助,但恐怕我做不到你评论的那种软弱的事。我已经做了一个chrome扩展,但是Firefox版本正在抵制。Firefox支持弱映射