前媒介
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相干代码稳固的同时,也要调研替换手艺啦。