flash在chrome中的状况检测

前媒介

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

媒介

跟着chrome的更新,之前的一些依靠flash的代码逻辑能够不再正确了。近来做了一些测试,总结一下。

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

正文

代码中,能够有一些功用是须要flash支撑的,能够同时选用了其他手艺,这时候就就要写一些逻辑去推断flash的状况,以便挑选手艺完成。

以现在的相识,能够把flash在chrome中的状况分红4种:

  • 未装置

  • 已装置被停用

  • 已装置已启用未许可(当前域运用flash)

  • 已装置已启用已许可

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

《flash在chrome中的状况检测》

是不是许可指的是右上角涌现阻断提醒时的顺手设置,或在chrome://settings/content中的Flash设置:

《flash在chrome中的状况检测》

《flash在chrome中的状况检测》

下面来剖析下这4种状况。

1. 未装置

平常运用navigator.plugins["Shockwave Flash"]检测chrome中flash装置的状况,奇怪的是,现在纵然没有装置flash,这段代码依然能够检测到flash信息。

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

《flash在chrome中的状况检测》

而一般装置flash时:

《flash在chrome中的状况检测》

二者代码的区别是如许的:

《flash在chrome中的状况检测》《flash在chrome中的状况检测》

所以能够经由过程filename这个属性来检测是不是装置了flash。

2. 已装置被停用

flash被停用时,navigator.plugins["Shockwave Flash"]没法检测到flash信息:
《flash在chrome中的状况检测》

所以这类状况很轻松就能够推断。

3. 已装置已启用未许可

这类状况的问题在于,浏览器确切装置了flash,navigator.plugins["Shockwave Flash"]也能够检测到装置了flash。而当前页面却不许可运用flash(chrome的限定战略)。

这类状况没法从navigator.plugins中检测,由于效果没有任何异常。

但由于浏览器限定了flash,所以flash对象是没法胜利建立的。能够设置定时器不停查询有无建立胜利,然后设置一个超时次数,比方50次,假如还没有建立胜利的话,能够认为是建立超时,标明这类状况。

临时没有想到更好的推断要领。

不过检测这类状况很有意义。用户是已装置了flash的。只是未许可flash运转,这时候能够简朴提醒用户设置许可运转就能够。平常chrome阻拦时,右上角会有阻拦设置:

《flash在chrome中的状况检测》

4. 已装置已启用已许可

这类状况一切一般,能够一般运用flash。上文已提到,插件对象的filename字段会显现真正的文件名:

《flash在chrome中的状况检测》

补充

不过flash最终是要被庖代的手艺。保证flash相干代码稳固的同时,也要调研替换手艺啦。

    原文作者:乌鸦
    原文地址: https://segmentfault.com/a/1190000007887150
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞