为筛选按钮容器 .auth-file-filter 改用事件委托,并在重新渲染时移除旧监听器,避免多次绑定导致回调重复执行。

This commit is contained in:
Supra4E8C
2025-10-26 17:33:06 +08:00
parent 5feea2e345
commit 8372906820

23
app.js
View File

@@ -3260,12 +3260,23 @@ class CLIProxyManager {
// 绑定认证文件筛选事件
bindAuthFileFilterEvents() {
const filterBtns = document.querySelectorAll('.auth-file-filter .filter-btn');
filterBtns.forEach(btn => {
btn.addEventListener('click', (e) => {
this.handleFilterClick(e.target);
});
});
const filterContainer = document.querySelector('.auth-file-filter');
if (!filterContainer) return;
// 清理旧的监听器,避免重复绑定
if (filterContainer._filterListener) {
filterContainer.removeEventListener('click', filterContainer._filterListener);
}
const listener = (event) => {
const button = event.target.closest('.filter-btn');
if (!button || !filterContainer.contains(button)) return;
event.preventDefault();
this.handleFilterClick(button);
};
filterContainer._filterListener = listener;
filterContainer.addEventListener('click', listener);
}
// 绑定认证文件操作按钮事件(使用事件委托)