vimium-c icon indicating copy to clipboard operation
vimium-c copied to clipboard

F键对B站投币选择按钮偶尔失灵

Open ABackerNINI opened this issue 3 years ago • 11 comments

Describe the bug

B站投币时选择1/2硬币, 大多数时候第一次按F时其中一个硬币选项没有按键提示. 偶尔两个都没有, 需要F取消再按F才会出现. 这个BUG应该很早就有了, 一两年肯定有. 不知道是不是B站有什么特殊机制.

第一次按F是这样的, QQ截图20220520231922

取消重按F, QQ截图20220520231940

To Reproduce

Steps to reproduce the behavior:

B站地址, https://www.bilibili.com/

触发概率大概有50%.

Browser, OS and Vimium C versions

Vimium C 1.98.0,Microsoft Edge 101,Windows 10

Edge Version: 101.0.1210.47 (正式版本) (64 位)

ABackerNINI avatar May 20 '22 15:05 ABackerNINI

是因为Vimium C 有好几类“识别可点击元素”的办法,其中一个是隔一阵子汇总一次,你点了硬币按钮后,弹出来的对话框是新创建的,需要几百毫秒的时间来等待“可点击”的信息汇总,才能给LinkHints用上。

这个等待主要是为了性能考虑,攒一批汇总一次,可以节约 CPU。目前没法修改等待时间。

但可以用 map Fq LinkHints.activateWithQueue 这种方式,连续模式下在“刚模拟点击后的第一次汇总”后会自动刷新 LinkHints,有些之前没被识别的就能识别到了。

也可以在第 2 次触发 LinkHints.activate 后的第 1 秒钟内,发现少提示了就立即按 <tab> 键,会立即进行汇总、刷新 LinkHints。

或者用 Firefox。Firefox 提供专有接口,可以用更低代价来收集这类元素,就没有这个等待了。不过 v1.98.0 版在 Firefox 上有个 bug,正好影响了收集,下个版本会修复。

gdh1995 avatar May 20 '22 15:05 gdh1995

OK, 小问题不影响, 感谢解答~~

ABackerNINI avatar May 20 '22 16:05 ABackerNINI

补充1:LinkHints显示着时,随时可以用 <f2> 来强制收集“onclick 属性有值”的元素,这个操作挺费 cpu,所以默认不收集;而 <f2>LinkHints刚启动第一秒的 <tab> 会搜集这个。它有时候能收集到更多可点击元素,取决于网页本身怎么写的。

补充2:最彻底的办法,是给 map f LinkHints.activate 添加参数,指定某些元素是可点击的,这个就不受收集方式的影响了。参考: https://github.com/gdh1995/vimium-c/wiki/Add-or-remove-hints#zh 。

对于 B 站硬币按钮,可以这么写:

map f LinkHint.activate clickable=".mc-box"

补充3:我现在打算加个“第二次显示 LinkHints 时立即汇总”的特性,应该也有用,回头设计设计。

gdh1995 avatar May 20 '22 16:05 gdh1995

厉害!! 我研究一下, 之前没注意还可以自定义排除, 完美了~~

ABackerNINI avatar May 20 '22 16:05 ABackerNINI

第 1.98.3 版里,LinkHints 连续显示时会强制立即汇总一次,所以一般来说那两个图片按钮都能被识别成“可点击”,所以可以去掉 clickable=".mc-box" 再试试了。

gdh1995 avatar Jul 01 '22 15:07 gdh1995

好像还是不行,版本是1.98.3的 流程:先F点击"币"按钮, 然后再F, "1硬币"和"2硬币"依旧有概率不显示.

之前的解决方案已经比较完美了, 赞^^

ABackerNINI avatar Jul 02 '22 07:07 ABackerNINI

试试linkhints.activatewithqueue呢?大概是alt-f

---原始邮件--- 发件人: @.> 发送时间: 2022年7月2日(周六) 下午3:08 收件人: @.>; 抄送: "Dahan @.@.>; 主题: Re: [gdh1995/vimium-c] F键对B站投币选择按钮偶尔失灵 (Issue #638)

好像还是不行,版本是1.98.3的 流程:先F点击"币"按钮, 然后再F, "1硬币"和"2硬币"依旧有概率不显示.

之前的解决方案已经比较完美了, 赞^^

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

gdh1995 avatar Jul 02 '22 07:07 gdh1995

alt+f对普通B站视频有效, 我试了7/8个都没问题, 不过测试番剧视频时用alf+f会显示"没有找到可点击的页面对象", 然后直接退出连续hint模式了, hint也没有显示

这是我在首页随便点进去的番视频 https://www.bilibili.com/bangumi/play/ep475674?spm_id_from=333.1007.partition_recommend.content.click https://www.bilibili.com/bangumi/play/ep511802?spm_id_from=333.1007.partition_recommend.content.click

ABackerNINI avatar Jul 02 '22 07:07 ABackerNINI

番剧页面点投币后,页面先立即显示了一个全屏的半透明遮罩层,过了很短时间才显示投币对话框,而 Vimium C 里 activateWithQueue 的延迟刚好落在这之间了,我想想怎么办吧。

gdh1995 avatar Jul 02 '22 14:07 gdh1995

发现一个小问题造成 第二次按 f 时没按我想的走。我用 withqueue 模式习惯了没注意到这部分写错了。下版本修。

gdh1995 avatar Jul 02 '22 14:07 gdh1995

番剧页面点投币后,页面先立即显示了一个全屏的半透明遮罩层,过了很短时间才显示投币对话框,而 Vimium C 里 activateWithQueue 的延迟刚好落在这之间了,我想想怎么办吧。

这个感觉不太好处理, 没想到好的办法可以忽略

发现一个小问题造成 第二次按 f 时没按我想的走。我用 withqueue 模式习惯了没注意到这部分写错了。下版本修。

OK

ABackerNINI avatar Jul 02 '22 16:07 ABackerNINI