优雅地适配浏览器
李鹏坤 / 2021-04-20
前阶段,心血来潮,想用
Agora.io
的音视频 api 写一个
web 应用
,发现“全屏”和“退出全屏”的功能要适配各个浏览器十分麻烦,各个浏览器的 api 都有自己的名称。有时候真的搞不懂,同样一个用法,为什么各个浏览器都有不同的方法名称,如:requestFullscreen
,W3C 规范就是 requestFullscreen
这个名字,而各家浏览器有私有名称,所以就有多个不同名称相同功能的方法:
requestFullscreen
(规范)msRequestFullscreen
(IE)mozRequestFullScreen
(火狐)webkitRequestFullscreen
(苹果)
为了适配各个浏览器,需要用一堆 if else
做判断,可是这样的代码效率太低了,所以一直很好奇别人是如何完成这个兼容工作的。
今天看到 openseadragon 全屏功能的 代码 ,可以说写得很优雅了。定义了一个收集全屏 api 的对象,然后判断各个浏览器特有 api,然后对对象内的属性进行重写。
看着一气呵成,但是要写成这段代码,肯定没少查文档,还有实际测试。前人栽树,后人乘凉。