webew
Войти » Регистрация
 
JavaScript

Определение версии flash-плеера

14 мая 2008, 2:27

Для эффективной вставки "флешек" иногда требуется определить версию flash-плеера.

Замечания:
1) В IE информацию о версии плеера можно узнать воспользовавшись компонентом ActiveX.
2) В остальных браузерах эта информация содержится в дочернем объекте plugin объекта navigator.

function flashVersion() {
    // Отдельно определяем Internet Explorer
    var ua = navigator.userAgent.toLowerCase();
    var isIE = (ua.indexOf("msie") != -1 && ua.indexOf("opera") == -1 && ua.indexOf("webtv") == -1);
    // Стартовые переменные
    var version = 0;
    var newversion;
    var lastVersion = 10; // c запасом
    var i;
    var plugin;
   
    if (isIE) { // browser == IE
        try {
          for (i = 3; i <= lastVersion; i++) {
            if (eval('new ActiveXObject("ShockwaveFlash.ShockwaveFlash.'+i+'")')) {
                  version = i;
            }
          }
        } catch(e) {}
    } else { // browser != IE
        for (i in navigator.plugins) {
            plugin = navigator.plugins[i];
            if (plugin.name == undefined) continue;
            if (plugin.name.indexOf('Flash') > -1) {
                newversion = /\d+/.exec(plugin.description);
                if (newversion == null) newversion = 0;
                if (newversion> version) version = newversion;
            }
        }
    }
    return version;
}

Итак, всё просто. Вызвали функцию — она вернула либо версию, либо 0, в случае отсутствия флеша.

(4 мая 2011 г. в код внесены исправления для поддержки 10-й версии Adobe FlashPlayer) - by 1234ru)


© Все права на данную статью принадлежат порталу webew.ru. Перепечатка в интернет-изданиях разрешается только с указанием автора и прямой ссылки на оригинальную статью. Перепечатка в печатных изданиях допускается только с разрешения редакции.
Добавить комментарий
Отображение комментариев: Древовидное | Плоское
NO USERPIC

aleks_raiden

супер! только не так давно искал как выяснить версию, было нужно.. жаль не нашел этого текста тогда!
14.05.2008, 23:45
Ответить

bur

С вопросами подобного рода обращайтесь к нам. Не стесняйтесь оставлять сообщения в любом интересующем разделе ;-)
15.05.2008, 09:49
Ответить
NO USERPIC

lumega

для определения версии браузера и другого сделал уже давно вот этот сервис
http://neorex.ru/whoiam/
06.06.2008, 19:21
Ответить

bur

Сервис, к сожалению, не помогает в работе с пользователями.
А для определения версии флеша там используется стандартный эдабовcкий скрипт, работающий по тому же принципу. Кстати, надо на него ссылку дать:
Flash Player Detection Kit
06.06.2008, 19:37
Ответить
NO USERPIC

new_forward

У меня стоит 10 плеер в ИЕ 10 показывает а в хроме, мозиле, опере показывает 1...Как сделать чтоб тоже 10 показывало...?
10.04.2011, 21:17
Ответить

1234ru

Попробуйте вот так:

function flashVersion() {
    // Отдельно определяем Internet Explorer
    var ua = navigator.userAgent.toLowerCase();
    var isIE = (ua.indexOf("msie") != -1 && ua.indexOf("opera") == -1 && ua.indexOf("webtv") == -1);
    // Стартовые переменные
    var version = 0;
    var lastVersion = 10; // c запасом
    var i;
    if (isIE) { // browser == IE
        try {
          for (i = 3; i <= lastVersion; i++) {
            if (eval('new ActiveXObject("ShockwaveFlash.ShockwaveFlash.'+i+'")')) {
                  version = i;
            }
          }
        } catch(e) {}
    } else { // browser != IE
        for (i in navigator.plugins) {
            var plugin = navigator.plugins[i].name;
            if (plugin == undefined) continue;
            if (plugin.indexOf('Flash') > -1) {
                var version = /\d+/.exec(plugin);
                if (version == null) version = 0;
            }
        }
    }
    return version;
}


Правда такое впечатление, что в браузерах, кроме IE, сейчас имя плагина - ShockWave Flash, т.е. без номера версии.
То, что не убивает нас, делает нас инвалидами.
13.04.2011, 00:36
Ответить
NO USERPIC

rgbeast

Теперь в мозилле версия хранится отдельно от имени плагина. Протестируйте такое в других браузерах:

function flashVersion() {
    // Отдельно определяем Internet Explorer
    var ua = navigator.userAgent.toLowerCase();
    var isIE = (ua.indexOf("msie") != -1 && ua.indexOf("opera") == -1 && ua.indexOf("webtv") == -1);
    // Стартовые переменные
    var version = 0;
    var lastVersion = 10; // c запасом
    var i;
    if (isIE) { // browser == IE
        try {
          for (i = 3; i <= lastVersion; i++) {
            if (eval('new ActiveXObject("ShockwaveFlash.ShockwaveFlash.'+i+'")')) {
                  version = i;
            }
          }
        } catch(e) {}
    } else { // browser != IE
        for (i in navigator.plugins) {
            var plugin = navigator.plugins[i].name;
            if (plugin == undefined) continue;
            if (plugin.indexOf('Flash') > -1) {
                var version = /\d+/.exec(navigator.plugins[i].version);
                if (version == null) version = 0;
            }
        }
    }
    return version;
}
13.04.2011, 01:39
Ответить

1234ru

Как оказалось, отдельно версия хранится только в firefox, в остальных — нет.
Универсальным для Chrome, Firefox и Opera является использование параметра description: в отличие от version он есть во всех трёх браузерах:

function flashVersion() {
    // Отдельно определяем Internet Explorer
    var ua = navigator.userAgent.toLowerCase();
    var isIE = (ua.indexOf("msie") != -1 && ua.indexOf("opera") == -1 && ua.indexOf("webtv") == -1);
    // Стартовые переменные
    var version = 0;
    var lastVersion = 10; // c запасом
    var i;
    var plugin;
    if (isIE) { // browser == IE
        try {
          for (i = 3; i <= lastVersion; i++) {
            if (eval('new ActiveXObject("ShockwaveFlash.ShockwaveFlash.'+i+'")')) {
                  version = i;
            }
          }
        } catch(e) {}
    } else { // browser != IE
        for (i in navigator.plugins) {
            plugin = navigator.plugins[i];
            if (plugin.name == undefined) continue;
            if (plugin.name.indexOf('Flash') > -1) {
                version = /\d+/.exec(plugin.description);
                if (version == null) version = 0;
            }
        }
    }
    return version;
}


То, что не убивает нас, делает нас инвалидами.
13.04.2011, 12:10
Ответить
NO USERPIC

rgbeast

В этом решении потерялась обработка нескольких потенциальных плагинов и получения максимальной версии.

       for (i in navigator.plugins) {
            plugin = navigator.plugins[i];
            if (plugin.name == undefined) continue;
            if (plugin.name.indexOf('Flash') > -1) {
                var newversion = /\d+/.exec(plugin.description);
                if (newversion == null) newversion = 0;
                if (newversion> version) version=newversion;
            }
        }

13.04.2011, 12:21
Ответить
NO USERPIC

knoot0279

нигде не могу найти вопрос на ответ:"не отображается flash облако сделанное через Tag Cloud Generator"

при это не отображается !только! в Firefox

дабы не занимать много места даю файл http://webew.ru/f/XhcrnOnA.js

подскажите пожалуйста решение проблемы.

заранее благодарен.
13.02.2012, 05:26
Ответить

1234ru

Для начала нужно открыть проблемную страницу, запустить расширение Firebug и посмотреть в нем в консоль - нет ли там каких-нибудь ошибок.

А вообще лучше поискать информацию на сайте производителя этого генератора.
То, что не убивает нас, делает нас инвалидами.
14.02.2012, 03:33
Ответить
NO USERPIC

knoot0279

на их сайте ничего нет. только демо http://www.tagcloud-generator.com/demo.php?XTCsid=f1114b948ceb0a3f8734bd81840a247a, но в демо на их сайте у меня ловит мозилла, а когда я его делаю у них, (есть функция пред просмотр) показывает только фон, а сами "теги" не появляются. вот все файлы из флеш облака http://webew.ru/f/4lrtf1aY.zip

В общем я в JavaScript новичок(если конечно и таким рангом окрестить можно), сидел смотрел на код с выпученными глазами но вот пару вещей заметил...

вобще, это странно т.к там нет php ,а используется конечно же javaScript , то он должен работать при запуске с локальной машины даже без использования денвера, оно так и есть... хром, сафари, ие, даже Adobe Dreamweaver (с его натянутой функцией "живой просмотр") работают. Для того чтобы работал сам флеш, имеется ссылка в коде на флеш стр.
14.02.2012, 04:35
Ответить

1234ru

Слушайте, это как-то очень сложно..
Мы, к сожалению, во флэше не разбираемся.
То, что не убивает нас, делает нас инвалидами.
14.02.2012, 04:43
Ответить
NO USERPIC

knoot0279

с флешом проблем точно нет т.к он у них написан... и прямого доступа к нему всеравно нет, там проблема в java... скорее всего он не правильно обращается к мозилле, но я это только предполагаю

а возможно, что проблема и вовсе кроется в самом браузере т.к я знакомых попросил открыть с помощью мозиллы и результат не лучше чем у меня вышел
14.02.2012, 04:46
Ответить

1234ru

Ну, ищите место, которое работает по-разному в разных браузерах.
Когда найдете - будет о чем говорить конкретно.
То, что не убивает нас, делает нас инвалидами.
14.02.2012, 04:52
Ответить
NO USERPIC

knoot0279

если вы скачаете архив, который я прикреплял выше и откроете html файл мозиллой(и другим браузером попробуйте, эффект на лицо), то увидите о чем я говорю, ну и тут пожалуй напишу... не отображаются теги
14.02.2012, 04:56
Ответить

1234ru

Ну хорошо, посмотрели внутрь архива, открыли файл в браузере. Не работает.
Никаких ошибок в javascript-консоли не видно, возможно, дело во флэше (а, возможно, и нет - непонятно).
Не получается определить, почему не работает.
То, что не убивает нас, делает нас инвалидами.
14.02.2012, 06:36
Ответить
NO USERPIC

knoot0279

ну ладно, спасибо большое за помощь :)
14.02.2012, 08:43
Ответить
Добавить комментарий
Отображение комментариев: Древовидное | Плоское
© 2008—2024 webew.ru, связаться: x собака webew.ru
Сайт использует Flede и соответствует стандартам WAI-WCAG 1.0 на уровне A.
Rambler's Top100

Реклама: