项目场景:
当我们使用MathML做公式展示,可能最大的问题就是浏览器兼容,当前主流版本都兼容了,可以支持无痕渲染MathML
但总有刁民搞事情,比如低版本猎豹,搜狗浏览器
问题描述
我们总不能为了这几个落后的浏览器,停止技术的迭代吧!这是未来所趋呀!
但兼容还是要兼容的,在不能渲染MathML的时候,至少提示“ 如遇公式无法展示,请更新浏览器到最新版本,或使用谷歌或火狐”
那么问题来了,我们该怎么判断浏览器支不支持 MathML?
解决方案:
1.首先我们看看官方
没懂什么意思,蒙蔽的一脸懵逼???,引入了项目也没啥效果
第二种:浏览器嗅探
就是监听浏览器类别,然后特殊处理,但你怎么知道那些浏览器不支持,市面那么多浏览器
最终解决方案:
首先我们就要思考问题,浏览器渲染不出来MathML标签,会有什么区别,它是怎么渲染出来?
当浏览器不支持MathML时,它们可能无法识别MathML元素中的样式属性,包括fontSize。这是因为MathML元素和属性不是标准HTML/CSS的一部分,所以不支持MathML的浏览器可能会忽略这些元素和属性,或者将它们视为未知元素,从而不会应用任何样式。
此外,即使在支持MathML的浏览器中,fontSize属性也可能不直接应用于MathML元素,因为MathML通常有自己的样式规则和属性,这些可能与标准HTML/CSS的处理方式不同。
所以这解决方法不就来了,当页面渲染完成后,我拿一个MathML 判断它是否有fontSize属性,不久成了,可以取到该属性就说明该浏览器支持MathML ,取不到就说明不支持,就不展示公式,继而展示相应的提示
下面上代码
mounted() {
// 判断浏览器是否支持MathML
const math = document.getElementById('math-tip')
let styel = math.style
if (!styel) {
this.isSupport = false
}
}