MapoMagpie / eh-view-enhance

Manga Viewer + Downloader, Focus on experience and low load on the site. Support: e-hentai.org | exhentai.org | pixiv.net | 18comic.vip | nhentai.net | hitomi.la | rule34.xxx | danbooru.donmai.us | gelbooru.com | twitter.com
MIT License
264 stars 8 forks source link

Bug report:UI 自动收起、gallery 读取不全、下载不完整 #31

Closed inttimmy closed 7 months ago

inttimmy commented 7 months ago

浏览器版本:Edge 浏览器最新版本 网站:EH

Bug 1: 下载任务会干扰详情页收起

问题描述

使用 “下载” 界面 “开始下载” 启动自动下载和打包后,每自动开始一个新的下载任务时,都会导致已经展开的详情界面(如设置详情页、下载详情页)被自动收起

正常情况下,似乎应是用户点击 bar 之外的部分时自动收起?

修复建议

增加关闭动画选项,或让这类详情界面不再被自动收回,需再点击一次对应按钮才能收起。

Bug 2: 读取 gallery 不全

问题描述

有概率无法自动获取到完整数量的 gallery 图片。

虽然将插件宫格界面滚动到最下方,可以触发自动加载,但依然有概率无法加载完整数量的图像(尤其是在点击悬浮窗,开启插件宫格界面前,已经在eh网页上处于 gallery 的非第一页时)。

比如:一个 gallery 有 7 页,共 623 张 imgs,每页 100 张 imgs,如果在开启 gallery 前已经使用网页本身的页面跳转,跳至第 7 页(非第一页),那么插件就有可能无法获取到完整的 623 张 imgs,只能获取 400、600 这样的 每页 imgs 数 的整数倍

由于此问题,将插件挂于后台自动下载时,可能无法获取到全部 imgs,导致下载不完整。

Bug 3: 点击 “下载中...“ 按钮会导致下载不完整 + 无法自动打包

问题

只点击一次 “下载” 界面的 “开始下载”,能够正常下载。

当下载已经开始后,再次点击 “下载中...” 按钮时,可以观察到正在下载的数量增加了 $最大并行下载数$ 个,导致实际的并行下载数增加到 (点击 “下载中...” 时正在下载的数量 + $最大并行下载数$)个。不过这只是小问题(并行下载数临时超过设置限制),在这几个图片下载完成后,插件依然能够正常受到 $最大并行下载数$ 设置的限制。

以上不是最主要的问题,关键在于,如果用户点击了一次或多次 “下载中...” 按钮,会导致点击按钮时所下载的图片 index 附近,有的图片无法被正常下载和打包。最终,下载始终无法完成:当下载完成(imgs 总数 - $所设置的最大并行下载数$)个 imgs 后,下载就停滞了,按任何按钮都不能正常完成下载,只能通过 “强制下载已下载的图片” 来打包已下载的内容。

总结来说就是,一旦手贱点击一次或多次 “下载中...” 按钮,gallery 中就会有 $最大并行下载数$ 个 imgs 无法被插件自动下载。同时,由于在数量上看,还没有下载完,插件也无法自动打包 zip,只能手动强制打包。

修复建议

当按钮变为 “下载中......” 时禁止点击、触发回调

建议

我曾尝试克隆源码自行修复此问题,奈何自己 js 水平十分有限。如果需要,我可以尽可能向你提供更多 bug 信息。如果你能修复它们,我将肥肠感激!(为什么中文写出一股英文味)

MapoMagpie commented 7 months ago

好的,晚点我会看看什么情况,如果能提供画廊地址就更好了。 在我修复前,有空的话,可以排查下是否是网络的原因导致某页没获取到,某页没有成功获取会在控制台输出这样的信息 page fetcher append images error:

inttimmy commented 7 months ago

任何 eh 画廊都可以触发(bug 2 需要画廊图片数够多,使得 gallery thumbnail 视图分为多页)。关于控制台输出我之后看一下再留 comment。

MapoMagpie commented 7 months ago

第二个问题我知道什么原因了,在画廊的最后一页时使用脚本就会出现,应该是分页元素的class被改变了。 第一个自动收起没复现,你说的每自动开始一个新的下载任务时是指每开始下载一张新的图片时,会被自动收起吗? 第三个问题暂时没复现,下载中...这个按钮是可以被多次点击的 总之我明天再测试测试。

inttimmy commented 7 months ago

我刚重新试了一下,第一个大概率成功复现:

似乎必要条件是窗口内开启了多个(>=2)画廊标签页,并都打开插件宫格页。来回切换两个标签页,并在每次切换后随便点开一下下载或设置界面、在界面内外移动几下鼠标,再继续切换标签页,来回循环,大概率很快会出现一个标签页的插件会出现自动收起(有且只有一个)。

自动收起具体体现为:打开bar的任意详情界面,比如设置,鼠标向上,向设置页面移动,这个详情页面就被自动收起了,鼠标并没有离开设置窗口。可能是不同实例之间共享了什么状态的问题?比如 指针是否离开了插件窗口,在前台标签页 a 上确实没离开,但检测到的是后台标签页 b 的。

第三个我又试着下载了3个画廊,没再出问题,这个应该复现条件比较复杂,之后我再试试吧。不过每点击一次 下载中... 确实会一次性增加 最大并行下载数 个 下载任务(我设置的4),快速重复点击甚至能暂时性开起10+个并行下载。不手贱老去点这个按钮的话,应该不会出问题。

inttimmy commented 7 months ago

第二个问题我知道什么原因了,在画廊的最后一页时使用脚本就会出现,应该是分页元素的class被改变了。 第一个自动收起没复现,你说的每自动开始一个新的下载任务时是指每开始下载一张新的图片时,会被自动收起吗? 第三个问题暂时没复现,下载中...这个按钮是可以被多次点击的 总之我明天再测试测试。

先前的描述不太对,应该和下载没关系,请参照:

我刚重新试了一下,第一个大概率成功复现:

似乎必要条件是窗口内开启了多个(>=2)画廊标签页,并都打开插件宫格页。来回切换两个标签页,并在每次切换后随便点开一下下载或设置界面、在界面内外移动几下鼠标,再继续切换标签页,来回循环,大概率很快会出现一个标签页的插件会出现自动收起(有且只有一个)。

自动收起具体体现为:打开bar的任意详情界面,比如设置,鼠标向上,向设置页面移动,这个详情页面就被自动收起了,鼠标并没有离开设置窗口。可能是不同实例之间共享了什么状态的问题?比如 指针是否离开了插件窗口,在前台标签页 a 上确实没离开,但检测到的是后台标签页 b 的。

第三个我又试着下载了3个画廊,没再出问题,这个应该复现条件比较复杂,之后我再试试吧。不过每点击一次 下载中... 确实会一次性增加 最大并行下载数 个 下载任务(我设置的4),快速重复点击甚至能暂时性开起10+个并行下载。不手贱老去点这个按钮的话,应该不会出问题。

MapoMagpie commented 7 months ago

阅读界面被再次展开后,不再重置到顶部: 1b1d5798a172936954a19e7aeaf7bad1e992a90d 修复页面读取不全: e54fbd7cb0bd2d14db0ebab3114271962d606cf8 修复输入页码跳页功能在Firefox不生效的问题: a5d91a23045e8bcf6fd9372d481d2f3f612dc657 输入页码并跳页这个功能是有的,在缩略图网格页面,直接输入数字键,然后按回车就可以跳到对应的位置。只是输入时不显示。 如果没生效那就试试键盘上方那块横向的数字键区域,因为我没有带独立小键盘区域的键盘,测试不了。 当然我之后会考虑加上直接的输入元素。

剩下没解决的: bar的折叠,后面会优化下,增加收起选项,收起后只剩下 1/100 这样的提示。 BUG3没复现,理论上只要图片加载了(边框变紫),打包时就不会缺失。 BUG1没复现,我之后再研究研究,现在是,从设置详情页上移动回bar上会收回,我会先改改这里。

inttimmy commented 7 months ago

BUG 3 我也复现不出来了,可能当时是 BUG 2 被触发了,704 页只下载到 700 页就停了(我的并行下载设置为 4),我以为这是个新的 bug。

以下是 bug 1 的录屏,概率性出现。(视频 12s 切换标签页后,bug 出现,体现为从 bar 向上移动一段距离,界面自动收起,从 bar 下方绕上去却不会自动收起)

https://github.com/MapoMagpie/eh-view-enhance/assets/92362299/abcb2ab4-da75-495f-831d-512da8ab128c

也可能与我接的两台显示器分辨率不同有关系?导致鼠标分辨率坐标啥的出了问题?

我经常开多个画廊标签页,实际使用时大概有 1/5 的概率出现这个 bug,具体原因不明。

MapoMagpie commented 7 months ago

我换了三个浏览器分别在linux和windows下测试,没成功复现。 我注意到你似乎开了一种编辑模式,可以随意修改页面上的文字内容。 然后我手动将几个标签页也设置为可编辑模式,document.designMode = "on",但还是没有复现。 试试禁用和编辑模式有关的脚本或拓展,再看看。

inttimmy commented 7 months ago

我换了三个浏览器分别在linux和windows下测试,没成功复现。 我注意到你似乎开了一种编辑模式,可以随意修改页面上的文字内容。 然后我手动将几个标签页也设置为可编辑模式,document.designMode = "on",但还是没有复现。 试试禁用和编辑模式有关的脚本或拓展,再看看。

不是编辑模式(无法修改网页内容),而是 Edge 浏览器的一个默认开启的功能:设置 > 辅助功能 > 键盘 > 使用文本光标导航界面,我将它关闭再试试。

这个自动收起的 bug 触发条件可能比较苛刻,我有意触发反而不经常出现,等我有了更多的观察结论我再来这里回复。

btw:毕竟使用时也不会频繁改设置,这个问题影响似乎不大,优化一下鼠标指针离开后界面自动收起的逻辑,可能也可以解决这个问题。

inttimmy commented 7 months ago

https://github.com/MapoMagpie/eh-view-enhance/assets/92362299/f334a3b2-5da7-4f0f-8b7d-e3fe79b713a1

会在向上移动光标超过固定水平线时收起(用工具看了下,水平线对于1080分辨率,大约位于980位置,屏幕下方,对应视频绿色水平线)

这个 bug 看起来与拖动功能强相关,每次按下拖动键进入拖动状态,bar会瞬间向上移动一段距离,而且移动的距离、位置和水平线看起来有些关系?只要 bar 自身低于该水平线,打开一个详情界面后上移光标,超过该水平线就会触发自动收起。将bar移动到高于水平线位置则不触发

bug 触发条件我也没看出来,用一段时间莫名其妙就出现了。如果能提供一个关闭自动收起的开关,就能暂时解决此问题(治标不治本,但主要是bug触发路径至今没弄明白)。

MapoMagpie commented 7 months ago

针对剩余的建议,我更新了下。你可以试试,有什么问题欢迎反馈。 上面视频里的问题,我之前遇到过类似的,当时是因为EhSyringe脚本有个注射器元素没隐藏导致的。不是确定你遇到的是否也是这个,可以用开发者工具的元素查找器扫一下(就是左上角的那个图标),看看那个位置有没有什么隐藏的元素。