{ let ua = /\bQQ\b|WeChat/g.exec(navigator.userAgent); env.value = ua ? ua[0] : "QQ、微信"...">
QQ 的 WebView 问题 | zedo { let ua = /\bQQ\b|WeChat/g.exec(navigator.userAgent); env.value = ua ? ua[0] : "QQ、微信"...">
跳至主要內容

QQ 的 WebView 问题

zedo2022年2月21日QQgiteewebview大约 3 分钟约 798 字

QQ 的 WebView 问题

缓存问题

在 QQ、微信环境下,Gitee Pages 的网页文件数据会被强制缓存,此后有几率无法自动更新

因此建议在其他浏览器内打开,或者手动清除缓存。

之前 QQ 甚至可以不需要网络就能够访问打开过的页面,最近(2022 年 3 月)发现这个问题似乎修复了。

清除缓存

QQ、微信 清理 WebView 缓存方法如下:

首先需要打开 X5 调试页面:

http://debugx5.qq.com,注意一定是 http 协议。

然后勾选 “文件缓存” ,然后点击“清除”:

step1 center |360

显示如下则清理完成:

step2 center |360

然后重新打开所要访问的页面即可。

提示

在微信内需要先开启 X5 内核:

微信开启X5内核 center

扫码后若提示 "force use x5 switch is on",即开启成功。

vue 路由问题

在部署博客的时候,发现 QQ 内打开链接的在操作 分享收藏复制链接 等行为时出现了问题:它提取的摘要、链接都是打开时的 URL 链接,而经过 vue 的路由切换的路径不能改变它分享的链接地址。

也就是说,比如你在 QQ 内打开的链接为 https://zedo.gitee.io/open in new window ,在里面打开任意的文章,当你选择在右上角分享给好友时,不论你当前浏览的文章的链接是什么,分享出去(或复制)的链接都将是 https://zedo.gitee.io/open in new window

提示

实际上,通过 history.pushState 改变网页地址,webview 分享时获取的地址是初次访问时的 url,这是本质问题,也应该是个 bug。

目前没有什么比较好的方法(用 javascript 检测分享行为等),测试了一番发现:除了对页面刷新之外,没有其他方法了。

容易想到使用 vue 路由守卫去做刷新,但是这对读者体验不好,因为每篇文章打开前都会刷新,而且不是每个篇文章都会被复制链接或分享。

最终,我的解决方案是:添加刷新按钮来执行刷新操作:

image-20220324221949233 center |400

可以发现在右下角多了一个按钮,点它就可以刷新啦~

2023-9-14 更新
重启 search-pro,css 样式调整