• html页面文字被额外添加font标签,导致vue双向绑定失效


    前端页面文字被额外添加font标签,导致vue双向绑定失效

    问题现象描述

     页面源码

    chrome 调试element面板结果

    对比源码和调试结果我们发现,我们的文字内容“你好世界”被额外的font标签包裹住了,而这个font标签在我们的源码里面是没有的,可见这个font标签是由浏览器生成的(因为我们的页面没有执行任何js代码)。

    细心的小伙伴可能发现啦,页面下方还多了两个div标签内容,添加了id名和class名,不仅如此,html根标签还被添加了class样式为"translated-ltr"。通过以上几点,作为我们问题的出发点,我们百度搜索这个id名和class名  (id="goog-gt-tt" ,class="skiptranslate")发现,最终通过百度查询资料发现,原来这个font标签和页面下方多出的div两个都是由chrome 翻译插件生成的

    下图所示div即为翻译插件生成的div内容,在上面的问题截图中我们也能看到它的身影。

    如图所示为chrome翻译插件弹窗内容

    既然我们知道了问题产生原因(由于被浏览器额外添加font标签,导致dom结构和vue虚拟dom结构不一致,从而不能正确的dom),现在有以下几种解决方案

    方案一

    我们将这个翻译功能禁止掉,即将上面翻译插件截图中的一律翻译按钮取消掉

    方案二

    明确告诉网页,当前页面不需要使用翻译功能。

    因为chrome浏览器会检查网页html 的 lang 属性(用于申明网页内容的语言类型),当发现网页申明语言类型(默认为en英文)和当前系统语言不同时,就会出现是否要翻译当前网页的插件弹窗,选择是否要翻译当前网页内容。

    基于这个,我们主动告知网页内容为中文内容,那么就不会出现弹窗啦。使用如下申明

    <!-- 声明当前网页的语言类型为中文 -->
    <html lang="zh">

     添加申明后,可以看到现在是正常效果啦

     上面这种添加语言标识的方法有一个问题是,当系统语言不是中文的时候,依然会有翻译提示弹窗。

    方案三

    当然,还有另外一种禁用谷歌翻译插件的方法,通过添加meta字段告诉浏览器网页不需要使用chrome翻译功能。示例如下

    <!-- 禁用谷歌翻译,防止在谷歌翻译下vue的数据绑定功能失效 -->
    <meta name="google" content="notranslate">

    @萍2樱释ღ( ´・ᴗ・` )

    打不死的小强
  • 相关阅读:
    算法疑难(js实现)---5、变态跳台阶
    算法疑难(js实现)---4、跳台阶(记忆化递归)
    算法疑难(js实现)---3、两个栈来实现一个队列
    算法疑难(js实现)---2、重建二叉树
    Ext的Panel总结(好文章)
    Extjs datefield 日历控件中文显示
    EXTJS项目实战经验总结一:日期组件的change事件:
    ExtJs内的datefield控件选择日期过后的事件监听select
    ExtJs FormPanel布局
    开发extjs常用的插件
  • 原文地址:https://www.cnblogs.com/mggahui/p/13689804.html
Copyright © 2020-2023  润新知