Skip to content

开启视图组后,列宽调整与右键菜单新增列存在严重的索引错位(Index Offset)问题 #1410

@Yang-Jia-Lin

Description

@Yang-Jia-Lin

您好。插件版本5.9.8
Image

一、bug复现步骤:

  1. 在 Zotero 7 中设置并启用 Zotero-Style 的“视图组”功能。
  2. 在 style 设置中隐藏部分列。
Image
  1. 选择设置好的某个视图组。
  2. 【Bug1】尝试调整视觉上的列B的列宽,结果实际被调整的是列C。
  3. 【Bug2】右键表头打开新增列菜单,点击新增“标签”列,实际上添加的是紧随其后的“阅读时间”列。

(bug的视频和gif都无法上传,上传至网盘 https://pan.quark.cn/s/0f2a3af0b925

二、AI对问题的分析(Root Cause Guess):

这是一个典型的数组索引错位。开启视图组后,部分列从 DOM/可见列表中移除,但相关事件(拖拽事件、菜单点击事件 Command/Click)中绑定的参数依然使用的是原始数组的 index 下标。
AI建议的修复方案:

  1. 在 views.ts 或生成列配置相关的菜单 UI 时,将 onClick((e) => toggle(index)) 改为基于唯一标识符传参:onClick((e) => toggle(column.id))。
  2. 在列宽拖拽监听中,不要依赖 splitters 的相对索引,改为读取 splitter.previousElementSibling 的 data-column-id 来精准锁定目标列。

此bug自2024年11月开始的版本就存在,期望早日修复,谢谢!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions