加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

flash在chrome中的状态检测

发布时间:2020-12-15 19:58:12 所属栏目:百科 来源:网络整理
导读:前前言 chrome 更新太快了,文章的内容已过期! chrome 更新太快了,文章的内容已过期! chrome 更新太快了,文章的内容已过期! 前言 随着chrome的更新,之前的一些依赖flash的代码逻辑可能不再准确了。最近做了一些测试,总结一下。 测试时间:2016年12月

前前言

chrome 更新太快了,文章的内容已过期!
chrome 更新太快了,文章的内容已过期!
chrome 更新太快了,文章的内容已过期!

前言

随着chrome的更新,之前的一些依赖flash的代码逻辑可能不再准确了。最近做了一些测试,总结一下。

测试时间:2016年12月。测试版本:win chrome 55。

正文

代码中,可能有一些功能是需要flash支持的,可能同时选用了其他技术,这时候就就要写一些逻辑去判断flash的状态,以便选择技术实现。

以目前的了解,可以把flash在chrome中的状态分成4种:

  • 未安装

  • 已安装被停用

  • 已安装已启用未允许(当前域使用flash)

  • 已安装已启用已允许

是否停用指的是chrome://plugins中设置是否停用flash:

是否允许指的是右上角出现阻断提示时的随手设置,或在chrome://settings/content中的Flash设置:

下面来分析下这4种状态。

1. 未安装

一般使用navigator.plugins["Shockwave Flash"]检测chrome中flash安装的情况,奇怪的是,目前即使没有安装flash,这段代码仍然可以检测到flash信息。

经查阅资料和验证,未安装flash的chrome中查看chrome://plugins插件信息,虽然有Adobe Flash Player的信息,但“位置”一项显示的是“internal-not-yet-present”:

而正常安装flash时:

两者代码的区别是这样的:

所以可以通过filename这个属性来检测是否安装了flash。

2. 已安装被停用

flash被停用时,navigator.plugins["Shockwave Flash"]无法检测到flash信息:

所以这种状态很轻松就可以判断。

3. 已安装已启用未允许

这种状态的问题在于,浏览器确实安装了flash,navigator.plugins["Shockwave Flash"]也可以检测到安装了flash。而当前页面却不允许使用flash(chrome的限制策略)。

这种状态无法从navigator.plugins中检测,因为结果没有任何异样。

但因为浏览器限制了flash,所以flash对象是无法成功创建的。可以设置定时器不断查询有没有创建成功,然后设置一个超时次数,比如50次,如果还没有创建成功的话,可以认为是创建超时,标明这种状态。

暂时没有想到更好的判断方法。

不过检测这种状态很有意义。用户是已经安装了flash的。只是未允许flash运行,这时候可以简单提示用户设置允许运行就可以。一般chrome拦截时,右上角会有拦截设置:

4. 已安装已启用已允许

这种状态一切正常,可以正常使用flash。上文已经提到,插件对象的filename字段会显示真正的文件名:

补充

不过flash最终是要被取代的技术。保证flash相关代码稳定的同时,也要调研替代技术啦。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读