问题描述
使用 window_tab 插件打开多个文件后(3个以上),在上栏标签页之间连续切换(不对文件内容做任何修改),会频繁弹出"是否保存该文件"的对话框。
复现步骤
- 打开 3 个以上的 markdown 文件
- 在上栏标签页之间连续不断地来回切换
- 对文件本身不做任何修改
- 切换若干次后,弹出"是否保存该文件"对话框
- 随后每次切换都会弹出“是否保存该文件”对话框
预期行为
未修改文件内容时,切换标签页不应弹出保存对话框。应丝滑切换。
实际行为
环境信息
- Typora 版本:1.8.10
- 插件版本:最新代码
- 操作系统:Windows 11
- 其他插件:未启用其他插件
问题分析
怀疑是 Typora 底层的修改检测机制(MutationObserver)将插件的 DOM 操作(如标签栏渲染、滚动位置恢复等)误判为文件内容修改,导致File.bundle.hasModified 被错误置为 true。
尝试过以下方案均无法彻底解决:
- 切换前比较
File.editor.getMarkdown() 与 File.bundle.savedContent,相同则清除修改标记 — 由于 Markdown往返转换(文件→DOM→getMarkdown())不保真,比较结果不可靠.
- 切换前调用
File.saveUseNode() 自动保存 — 仍偶尔出现弹窗
问题描述
使用 window_tab 插件打开多个文件后(3个以上),在上栏标签页之间连续切换(不对文件内容做任何修改),会频繁弹出"是否保存该文件"的对话框。
复现步骤
预期行为
未修改文件内容时,切换标签页不应弹出保存对话框。应丝滑切换。
实际行为
环境信息
问题分析
怀疑是 Typora 底层的修改检测机制(MutationObserver)将插件的 DOM 操作(如标签栏渲染、滚动位置恢复等)误判为文件内容修改,导致
File.bundle.hasModified被错误置为true。尝试过以下方案均无法彻底解决:
File.editor.getMarkdown()与File.bundle.savedContent,相同则清除修改标记 — 由于 Markdown往返转换(文件→DOM→getMarkdown())不保真,比较结果不可靠.File.saveUseNode()自动保存 — 仍偶尔出现弹窗