Convert gairaigo (Japanese loan words) back to English
< Обсуждения Katakana Terminator
谢谢反馈,这两点对我都很有帮助,尤其是第二点。
我之前也发现一些网站会循环触发,但是那些网站 ajax 交互太复杂了,相比之下日亚是个很不错的测试对象。
我试了下日亚的单品页面也会有这个问题,另外也可以试试登入后(因为我一直是登入状态)
我做了一次大幅重构,试图让脚本在页面变更时只计算有变化的部分,而不是整个 document.body
。
可以测试下这个版本性能是否有改善(或者恶化 QuQ):
https://github.com/Arnie97/katakana-terminator/blob/c87861e/katakana-terminator.user.js
这种改法风险和收益并存。假设各网站的前端大佬们都保持善良和理智,尽量用 Virtual DOM 减少不必要的渲染,那新版会大幅减少计算量。但如果有网站把同一个元素和它的子孙节点从 DOM 上来回摘掉又挂上几千次,由于我没有想出去重的好办法,新版会重复检查几千次(与此同时还多存了几千个 *Node 指针,但是哪怕在我 256M 主存的电子垃圾上,这也基本不会产生什么问题)。而旧版每秒至多只会把整个页面(包括没变的地方)遍历 2 次。退一步讲,如果真有这样一个坑爹网站,我不开脚本可能也会很慢?
另外这次重构中发现一个哭笑不得的问题,我的脚本没能过滤掉自己对页面的改动,就算原页面是没有 AJAX 的纯 HTML,自己的回声也会导致重复扫描两遍。只不过我过滤了 <ruby>
,恰好没有形成无限递归。
因为没通知,这几天才发现有更新,我今天开始测试。
另外目前发现一个新的 bug,YouTube 切换到日文,然后各种页面切换几次,会发现 YouTuber 作者页会出现文字被 duplicate n 次的问题
YouTuber 作者页会出现文字被 duplicate n 次
今天终于复现这个 bug 了。虽然没在作者页触发成功,但是发现这个页面不需要切页面就能触发类似 bug: https://www.youtube.com/watch?v=ZdArkFMBZpY
另外日亚的页面,我发现依旧会 CPU 起飞,使用 github 上最新的代码,我看了下你前几个回复中的那个 commit 是合并进去了的
复现 url
https://www.amazon.co.jp/gp/product/B09573CT5Y/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1
非常感谢反馈,那我先不往 GreasyFork 发布新版了。不过我用上面日亚这个链接没能复现出截图里反复循环处理同一组节点的 case…
您使用的脚本管理器是哪种,当前页面上有其他生效的 user script 么
用的是tampermonkey,只有这一个脚本,那个页面那天我记得上面是有促销商品,这几天又没了。
另外就是即使没有促销的页面开了2-3个(也不确定),也明显会感觉到 Amazon 页面变的非常卡(滚动响应变慢+浏览器里面cmd+c复制要等2秒),这个现象只在日亚页面上遇到,其他的可能我用的不多忽略了,我的机器配置是i9+5700xt
另外如果这个问题不好解决,能不能暂时在代码里面维护一个网站的列表,这些网站的轮询时间变成5-10s一次,这样也不至于浏览器打开这些网页时 chrome 会非常卡
这些网站的轮询时间变成 5-10s 一次
代码里搜 500
,把这个数改成 10000
或改成 /amazon.(co.jp|com|cn)$/.test(window.location.hostname)? 10000: 500
之类
目前有2个bug
1. 一个是 google translate cn 域名被重定向的问题
2. 另外是在日亚的商品页面,看 console 页面不知道为何会循环不停的翻译,导致 chrome 占满 CPU,可能是日亚页面会一直触发 domChangedSinceLastScan