Поддержка Flash против установленной Flash - PullRequest
3 голосов
/ 29 октября 2011

Есть ли способ (в JavaScript) обнаружить между следующими двумя сценариями?

  1. Устройство поддерживает Flash, но Flash не установлен.
  2. Устройство не поддерживает Flash (например, iPad, iPhone)

Я знаю, как определить, установлена ​​ли Flash, и я знаю, как определить iPad или iPhone, но хотел найти способ общего определения, поддерживает ли устройство Flash вообще, без использования какого-либо белого списка или черный список.

Ответы [ 4 ]

4 голосов
/ 29 октября 2011

Вы можете определить, установлена ​​ли вспышка или нет. Для этого Adobe предоставляет код Javascript.

Вы не можете определить, поддерживается ли вспышка (например, доступна), но не установлена. В некотором смысле по определению, если флэш-память не установлена, на устройстве нет ничего, что указывало бы на то, может ли быть установлена ​​флэш-память или нет. Вы можете понять, почему это так, потому что устройство может поставляться сегодня без флеш-памяти и без флеш-памяти, а затем флеш-память может быть доступна позже без каких-либо изменений в самом устройстве. Таким образом, само устройство не могло знать, что для него доступна вспышка.

Единственный способ узнать, доступна ли флэш-память, - это вести собственный гигантский список устройств. Поскольку он постоянно меняется, вы даже не можете вставить его в свой JavaScript. Вам придется разместить его на сервере и получать информацию через ajax.

Ярлык (который звучит так, как вы уже думали) - определить, установлена ​​ли флэш-память, а если нет, посмотреть, является ли устройство одним из немногих устройств с большим объемом (Android, iDevice, Windows Phone, планшет Windows и т. д.) и используйте свои заранее подготовленные знания о том, есть ли на этих устройствах флэш-память или нет. Что касается остальных устройств, вы просто не узнаете.

0 голосов
/ 22 января 2016

Возможно, здесь немного поздно, но этот небольшой фрагмент помогает проверить, доступна ли 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;
}
0 голосов
/ 29 октября 2011

Нет. У вас либо установлена ​​вспышка, либо нет, но нет способа узнать, поддерживает ли устройство теоретически вспышку.

В конце концов, ад может замерзнуть, и Apple может выпустить Flash для iOS. Или, может быть, пользователь запускает какую-то странную версию для Android или Firefox на Unix на Itanium, у которого нет Flash-плеера. Вам придется вести список всех доступных флэш-плееров, и это утомительно.

0 голосов
/ 29 октября 2011

Нет.

Лучше всего было бы сохранить массив сопоставлений поддерживаемых пользовательских агентов, а затем использовать его в методе getSupported(), который сопоставляет пользовательский агент с вашим списком поддерживаемых пользовательских агентов, а те - нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...