gpt4 book ai didi

javascript - 对象在 panel.port.on 上返回两次

转载 作者:行者123 更新时间:2023-11-30 17:24:03 25 4
gpt4 key购买 nike

我遇到过这样的问题,即来自 contentScriptFile 的数据在每个调用函数上以渐进方式返回,例如第一次调用它只返回 1 个实例,第二次调用它返回 2 个实例,第三次调用它返回 3 个实例。

主要.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);
});

面板脚本.js:

self.port.on("pane", function onShow() {
selectChoosen.addEventListener("click", function onClick(event) {
self.port.emit("check", options());
}, false);

});

function options() {
return selectedOptions;
};

你能帮我弄清楚如何修复它吗?

最佳答案

这是因为您在每次调用 onShow 处理程序时都添加了点击处理程序。我想你想做的是:

selectChoosen.addEventListener("click", onClick, false);

function onClick(event) {
self.port.emit("check", options());
}

function options() {
return selectedOptions;
};

...这样您只需添加一次点击事件监听器。

关于javascript - 对象在 panel.port.on 上返回两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24617757/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com