Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Общие вопросы (http://www.flasher.ru/forum/forumdisplay.php?f=10)
-   -   Как определить наличие плагина (http://www.flasher.ru/forum/showthread.php?t=23990)

GrafR 04.12.2001 11:54

Как определить наличие плагина
 
Скажите пожалуйста, как определить наличие на машине плагина вообще, а в частности 5-го с помощью Action.
Сразу спасибо.

fancy 04.12.2001 12:14

такой пойдет?

Код:


var haveflash = false;
var flash2Installed = false;                // boolean. true if flash 2 is installed
var flash3Installed = false;                // boolean. true if flash 3 is installed
var flash4Installed = false;                // boolean. true if flash 4 is installed
var flash5Installed = false;                // boolean. true if flash 5 is installed
var maxVersion = 5;                                        // highest version we can actually detect
var actualVersion = 0;                                // version the user really has
var hasRightVersion = false;                // boolean. true if it's safe to embed the flash movie in the page

// write vbscript detection if we're on ie win

var isIE = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;        // true if we're on ie
var isMac = (navigator.appVersion.indexOf("Mac") != -1) ? true : false; // true if we're on mac

if(isIE && !isMac) // don't write vbscript tags on anything but ie win
        {
        document.write('<SCRIPT LANGUAGE=VBScript\> \n');
        document.write('on error resume next \n');
        document.write('flash2Installed = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.2"))) \n');
        document.write('flash3Installed = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.3"))) \n');
        document.write('flash4Installed = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.4"))) \n');
        document.write('flash5Installed = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.5"))) \n');       
        document.write('</SCR' + 'IPT\> \n'); // break up end tag so it doesn't end our script
        }

if (navigator.plugins)                                                                  // does navigator.plugins exist?
        {                                                               
        if (navigator.plugins["Shockwave Flash 2.0"]        // is Flash 2 installed?
        || navigator.plugins["Shockwave Flash"])                  // no? then is flash 3+ installed?
                {
                var isVersion2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";                                // flash 2 ref.
                var flashDescription = navigator.plugins["Shockwave Flash" + isVersion2].description;        // plugin description
                var flashVersion = parseInt(flashDescription.charAt(flashDescription.indexOf(".") - 1));        // plugin version

                if (flashVersion == 2) flash2Installed = true;        // set appropriate version flag
                if (flashVersion == 3) flash3Installed = true;
                if (flashVersion == 4) flash4Installed = true;
                if (flashVersion == 5) flash5Installed = true;
                }
        }
       
for (var i = 2; i <= maxVersion; i++)        // loop through all versions we're checking
        {
        if (eval("flash" + i + "Installed") == true) actualVersion = i; // set actualVersion to highest detected version
        }

if (actualVersion>4) { haveflash = true; } else { haveflash = false; }


надеюсь тебе подойдет

GrafR 05.12.2001 06:56

Спасибо, но есть вопрос
 
Спасибо большое, очень полный пример. Но если те не против, я хотел бы уточнить.

Почему откидываются клиенты с машинами "МАК":

var isIE = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false; // true if we're on ie
var isMac = (navigator.appVersion.indexOf("Mac") != -1) ? true : false; // true if we're on mac

if(isIE && !isMac) // don't write vbscript tags on anything but ie win
{

Потом, здесь нет ни слова о Нэтскейпе. Могет быть можно для полноты еще добавить:

var plugin = (navigator.mimeTypes &&
navigator.mimeTypes["application/x-shockwave-flash"]) ?
navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin : 0;
if (plugin && parseInt(plugin.description.substring(plugin.description.indexOf(".")-1)) >=5) {
window.location = "...";
}


Еще объясни пожалуйста (я не силен в яве) почему:
document.write('</SCR' + 'IPT\> \n');
а не:
document.write('</SCRIPT\> \n');
и что это означает? :rolleyes:

А так все класно :)

___________________________________________________
И все же я немного не это имел ввиду:
Я думал поставить задержку и обратиться в мувику swf, который на ActionScript определит плугин, а если машина не понимает swf, то после задержки перебросит на соответствующий html.
Но это все не принципиально, хотя такой вариант я думаю есть.
;)

fancy 05.12.2001 09:10

Цитата:


Еще объясни пожалуйста (я не силен в яве) почему:
document.write('</SCR' + 'IPT\> \n');
а не:
document.write('</SCRIPT\> \n');
и что это означает?

а разницы нет никакой, хочешь так не хочешь пиши по своему :D

по поводу нетскейпа ничего не имею против сам его любил до поры до времени :) сейчас перешел на Mazilla очень кайфная штука :)

и вопрос от меня, как ты можешь проверить флЭшем наличие плагина, если флЭш без плагина не работает? :)
или я не понимаю? если найдешь способ скинь на мыло плиз :) буду признателен :)

fancy 05.12.2001 09:15

одному Богу известно :)
 
Цитата:


Еще объясни пожалуйста (я не силен в яве) почему:
document.write('</SCR' + 'IPT\> \n');
а не:
document.write('</SCRIPT\> \n');
и что это означает?

а разницы нет никакой, хочешь так не хочешь пиши по своему :D

по поводу нетскейпа ничего не имею против сам его любил до поры до времени :) сейчас перешел на Mazilla очень кайфная штука :)

и вопрос от меня, как ты можешь проверить флЭшем наличие плагина, если флЭш без плагина не работает? :)
или я не понимаю? если найдешь способ скинь на мыло плиз :) буду признателен :)


Часовой пояс GMT +4, время: 06:51.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.