为筛选按钮容器 .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() { bindAuthFileFilterEvents() {
const filterBtns = document.querySelectorAll('.auth-file-filter .filter-btn'); const filterContainer = document.querySelector('.auth-file-filter');
filterBtns.forEach(btn => { if (!filterContainer) return;
btn.addEventListener('click', (e) => {
this.handleFilterClick(e.target); // 清理旧的监听器,避免重复绑定
}); 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);
} }
// 绑定认证文件操作按钮事件(使用事件委托) // 绑定认证文件操作按钮事件(使用事件委托)