偶然在多个页面使用了阿里云提供的播放器的系统里发现个 BUG
在 PC/MAC 端的 Chrome 浏览器中
1. 一部分页面加载播放器时报错且没有任何提示
2. 而另一部分页面加载播放器时,Chrome 会弹出“是否允许该页面使用 Flash Player”的提示,点击”允许“,则视频正常播放
3. 在可正常播放视频的页面中,点击了“允许”后,再回到有问题的页面,刷新,发现此时这类页面的播放器也可以正常工作了
BUG 分析
简单对两类页面进行人肉 diff 操作发现
1. 表现不正常的页面引用的 js 路径为 http://g.alicdn.com/de/prismplayer/1.5.2/prism-min.js
2. 而可以正常工作的页面引用 js 路径为 http://g.alicdn.com/de/prismplayer/1.4.7/prism-min.js
因官方宣称这个播放器会自适应 H5 和 Flash 两种模式,从出错的表象来看,猜测是 1.5.2 版本的自适应逻辑有一些问题。一开始想简单解决,猜测最新版本的播放器应该已经解决了这个 BUG,于是直接换用最新版本(1.5.7),测试后发现问题依旧,只是最新版本在播放器中多了一行文字提示,大意是播放类型不支持
为了定位问题,下载了两个链接对应的源 prism.js
(去除后缀 -min,一般带 -min 的 js 都是经过压缩、混淆,用于正式环境加载使用)文件
分析对比两个版本,发现与此问题相关的核心代码如下
v1.4.7