我遇到过这样的问题,即来自contentScriptFile的数据会在渐进式中的每个调用函数上返回,例如:对于第一次调用,它只返回1个实例,对于第二次调用,它返回2个实例,对于第三次调用,它返回3个实例。
main.js:
var panel = panels.Panel({
width: 270,
height: 255,
contentURL: self.data.url("panel.html"),
contentScriptFile: self.data.url("panelScript.js"),
});
function handleClick(state) {
panel.show({
position: button
});
}
panel.on("show", function() {
panel.port.emit("pane");
});
panel.port.on("check", function(options) {
panel.hide();
console.log(options);
});
panelScript.js:
self.port.on("pane", function onShow() {
selectChoosen.addEventListener("click", function onClick(event) {
self.port.emit("check", options());
}, false);
});
function options() {
return selectedOptions;
};
你能帮我弄清楚如何修复它吗?
答案 0 :(得分:2)
这是因为每次调用onShow处理程序时都要添加click处理程序。我想你想要做的是:
selectChoosen.addEventListener("click", onClick, false);
function onClick(event) {
self.port.emit("check", options());
}
function options() {
return selectedOptions;
};
...这样你只需添加一次click事件监听器。