BigT 发表于 4 天前

getValue/setValue存储问题

楼主正在实现一个高亮的功能,目前是把高亮的状态状态放到了setValue里面来实现切换Tabs的时候默认开启高亮。但现在有个问题是,当高亮状态为true的时候,关闭浏览器,再开启的话高亮就变成true了(希望默认是false),我找了找似乎没有能够检测浏览器开关的api。

这时有什么方法能让,在下一次打开浏览器使用脚本的时候,高亮状态变成false吗?以及,如果我开启了多个浏览器,这时高亮里面的状态会冲突吗?

王一之 发表于 3 天前

当一个tab开启高亮的时候,希望其它tab也高亮,但是重启浏览器的时候希望高亮默认是false?

想不到这种API,油猴脚本做不到这种类似session的功能,如果你是只在一个域里面操作的话,你可以考虑使用 sessionStorage



李恒道 发表于 3 天前

王一之 发表于 2025-9-21 11:00
当一个tab开启高亮的时候,希望其它tab也高亮,但是重启浏览器的时候希望高亮默认是false?

想不到这种API ...

还有一种思路是当tab处于活跃的时候30s刷新一次value
如果时间戳超过60s说明浏览器关闭过了

王一之 发表于 前天 09:49

李恒道 发表于 2025-9-21 17:51
还有一种思路是当tab处于活跃的时候30s刷新一次value
如果时间戳超过60s说明浏览器关闭过了 ...

也不是不行,但是如果没有tab的话,或者待机了之类的操作,也会被认为关闭

李恒道 发表于 前天 22:05

王一之 发表于 2025-9-22 09:49
也不是不行,但是如果没有tab的话,或者待机了之类的操作,也会被认为关闭 ...

突然想到后台脚本执行这个是不是更确定一些?
可不可以在后台脚本留个变量跟正常脚本沟通

王一之 发表于 昨天 09:43

李恒道 发表于 2025-9-22 22:05
突然想到后台脚本执行这个是不是更确定一些?
可不可以在后台脚本留个变量跟正常脚本沟通 ...

也可以,但是通信现在其实不是很好搞,而且要多脚本

BigT 发表于 昨天 13:45

李恒道 发表于 2025-9-22 22:05
突然想到后台脚本执行这个是不是更确定一些?
可不可以在后台脚本留个变量跟正常脚本沟通 ...

我发现脚本里确实是做不到后半句

当一个tab开启高亮的时候,希望其它tab也高亮,但是重启浏览器的时候希望高亮默认是false?


前半句话因为希望是跨域,所以使用get/setValue+addValueChangeListener+pinia+watch做到了。

后半句话我周末彻底研究了一下发现实现不了,所以我的就忽视掉了这个问题,把高亮状态存入getValue,打开脚本就保持上一次的高亮状态。不过这样的话,一旦页面的DOM过多,高亮的显示以及脚本的运行会出现非常明显的卡顿。

目前卡顿问题也解决了,当然,是让GPT5老师解决的。我看了下大致是使用requestIdleCallback,setTimeout,的方式来降低运行时的渲染卡顿,高亮代码使用了分段优化。具体的实现过程,待我这周末开贴分享一下

李恒道 发表于 5 小时前

BigT 发表于 2025-9-23 13:45
我发现脚本里确实是做不到后半句




哥哥加油
期待哥哥分享技术
页: [1]
查看完整版本: getValue/setValue存储问题