资讯专栏INFORMATION COLUMN

flash在chrome中的状态检测

wwolf / 749人阅读

摘要:未安装一般使用检测中安装的情况,奇怪的是,目前即使没有安装,这段代码仍然可以检测到信息。已安装已启用未允许这种状态的问题在于,浏览器确实安装了,也可以检测到安装了。这种状态无法从中检测,因为结果没有任何异样。

前前言

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相关代码稳定的同时,也要调研替代技术啦。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/86604.html

相关文章

  • 《JavaScript高级程序设计》(第3版)读书笔记 第8章 BOM

    摘要:仅限数值表示新窗口的高度。此时只要检查这个返回值就可以确定弹窗是否被屏蔽。返回一个布尔值,代表用户选择还是返回一个字符串或者,输入了值并确定,返回字符串,其他方法关闭返回打印查找对话框。 ECMAScript是JavaScript的核心,但如果要在Web中使用JavaScript,那么BOM(浏览器对象模型)则无疑才是真正的核心。 W3C为了把浏览器中JavaScript最基本的部分...

    AWang 评论0 收藏0
  • JavaScript の 客户端检测

    摘要:博文模块增强模式进行客户端检测标签博文常用的检测方式为能力检测用户代理检测这里有用户代理检测检测插件非浏览器是一个包含浏览器插件的数组这个数组的每一项都包含插件的名字插件的描述插件的文件名插件所处理的类型数量检测插件在中无效方法用于把字符串 [博文]模块增强模式进行客户端检测 标签: 博文 常用的检测方式为: [ ] 1 . 能力检测 [ ] 2 . 用户代理检测 这里有 2 ...

    KnewOne 评论0 收藏0
  • JavaScript简明教程之浏览器,前端程序猿必看

    摘要:浏览器对象可以获取浏览器提供的很多对象,并进行操作。对象不但充当全局作用域,而且表示浏览器窗口。对象表示当前页面的信息。由于在浏览器中以形式表示为树形结构,对象就是整个树的根节点。这个行为由浏览器实现,主流浏览器均支持选项,从开始支持。 由于JavaScript的出现就是为了能在浏览器中运行,所以,浏览器自然是JavaScript开发者必须要关注的。【写的比较多,难免有疏漏的地方,希望...

    explorer_ddf 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<