Flash metadata gathering
HTML
<div>
<ul>
<li><b>Is Flash enabled?</b> <span id="flash">???</span>
</li>
<li><b>Flash version?</b> <span id="version">???</span>
</li>
<li><b>Using Pepper Flash?</b> <span id="pepper">???</span>
</li>
<li><b>Using ActiveX?</b> <span id="activex">???</span>
</li>
</ul>
</div>
JavaScript
var isFlashEnabled;
var getFlashVersion;
var isUsingPepperFlash;
var isUsingActiveX;
//
// SOURCES FOR MUCH OF THIS CODE:
// - https://code.google.com/p/doctype-mirror/wiki/ArticleDetectFlash#The_code
// - http://stackoverflow.com/questions/12866060/detecting-pepper-ppapi-flash-with-javascript
//
(function () {
var hasFlash = false;
var isActiveX = false;
var flashVersion = '';
var isPPAPI = false;
/**
* Derived from Apple's suggested sniffer.
* @param {String} desc e.g. "Shockwave Flash 7.0 r61"
* @return {String} "7.0.61"
* @private
*/
function parseFlashVersion(desc) {
var matches = desc.match(/[\d]+/g);
matches.length = 3; // To standardize IE vs FF
return matches.join('.');
}
function isPepperFlash(flashPlayerFileName) {
return !!flashPlayerFileName && (flashPlayerFileName = flashPlayerFileName.toLowerCase()) && (
flashPlayerFileName === "pepflashplayer.dll" || flashPlayerFileName === "libpepflashplayer.so" || flashPlayerFileName === "pepperflashplayer.plugin" || flashPlayerFileName.slice(-13) === "chrome.plugin") || flashPlayerFileName.indexOf("pepflashplayer") > -1 && flashPlayerFileName.indexOf(".dll");
}
function inspectPlugin(plugin) {
if (plugin) {
hasFlash = true;
if (plugin.version) {
flashVersion = parseFlashVersion(plugin.version);
}
if (!flashVersion && plugin.description) {
flashVersion = parseFlashVersion(plugin.description);
}
if (plugin.filename) {
isPPAPI = isPepperFlash(plugin.filename);
}
}
}
var plugin, ax, mimeType;
if (navigator.plugins && navigator.plugins.length) {
plugin = navigator.plugins['Shockwave Flash'];
inspectPlugin(plugin);
if (navigator.plugins['Shockwave Flash 2.0']) {
hasFlash = true;
flashVersion =...