有没有一种方法(使用JavaScript)可以检测以下两种情况之间的区别?
- 设备支持Flash,但未安装Flash。
- 设备不支持Flash(例如:iPad、iPhone)
我知道如何检测Flash是否已安装,也知道如何特定地检测iPad或iPhone,但希望找到一种通用的方法来检测设备是否支持Flash,而不使用任何白名单或黑名单。
有没有一种方法(使用JavaScript)可以检测以下两种情况之间的区别?
我知道如何检测Flash是否已安装,也知道如何特定地检测iPad或iPhone,但希望找到一种通用的方法来检测设备是否支持Flash,而不使用任何白名单或黑名单。
function is_flash_support() {
var flash_support = false;
try {
var fo = new ActiveXObject('ShockwaveFlash.ShockwaveFlash');
if(fo) {
flash_support = true;
}
} catch (e) {
if(navigator.mimeTypes && navigator.mimeTypes['application/x-shockwave-flash'] != undefined && navigator.mimeTypes['application/x-shockwave-flash'].enabledPlugin) {
flash_support = true;
}
}
return flash_support;
}
不行。
你最好的选择是存储一个支持用户代理的映射数组,然后在一个getSupported()
方法中使用它来将用户代理与您支持的用户代理列表进行匹配,以及那些不支持的用户代理。
不行。你要么安装了Flash,要么没有,但是理论上无法知道设备是否支持Flash。
毕竟,地狱可能会冻结,苹果可能会为iOS发布Flash。或者用户正在运行一些奇怪的Android版本或在Itanium上运行某个Unix上的Firefox,这些都没有Flash播放器。你必须维护所有可用Flash播放器的列表,这很繁琐。