背景
项目中一个列表页面,出现一个bug:表格数据进行筛选后未进行刷新,但是查看network可以看到接口是正常返回了的,也就是视图数据未进行刷新,好生奇怪
分析
发现不管怎么切换筛选项,列表数据都不进行刷新,一直展示第一次渲染的数据,我自己的电脑无法出现
刚开始猜测是否是缓存的问题,结果测试切换成无痕之后,确实是好的,所以测试把非无痕浏览器进行缓存清空,结果还是一样的,判定多半跟是否是无痕没关系
之后又重新部署了一遍测试环境,问题仍然存在
后来我发现测试电脑自动进行了谷歌翻译,带着怀疑的态度切换成英文后,问题没有了,然后我又切换成中文,问题又出现了,问题定位了!谷歌翻译导致了页面不刷新!!!
翻译前:
<div class="cell">
<div data-v-da78699>xxx</div>
</div>
翻译后:
<div class="cell">
<div data-v-da78699>
<font style="vertical-align: inherit;">
<font style="vertical-align: inherit;">xxx</font>
</font>
</div>
</div>
去百度看了看,发现确实存在这样的问题,原因是因为谷歌翻译导致数据渲染的时候找不对对应的dom节点,所以节点就没有更新!
解决
在index.html添加了meta属性,如果是Google,则不进行翻译
<!-- 如果是Google浏览器,则禁止翻译 -->
<meta name="google" content="notranslate">
加上这个meta后,谷歌浏览器上面的右侧不会出现翻译的按钮
也可以修改项目的语言
但是用户其实还可以右键选择翻译网页,经过多次切换后,同样会有这样的问题
解决方案就是给你不想进行翻译的容器上加上一个类即可,这种情况下,用户就算右键点击了翻译,页面也不会有问题
class="notranslate"