Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Плагины/ActiveX/MIME


Автор: vvvictor 7.3.2006, 08:32
Всем привет, может я плохо искал, но...... Поэтому прошу сильно не пинать а просто кинуть на нужные ссылки.

Итак задача:
Известно, что в Mozilla/FireFox по URL about:plugins можно получить список установленных плагинов и поддерживаеммых ими MIME....... Как эту информацию получить средствами JavaScript - я знаю. Но тот-же скрипт при прогонке в IE - выдает пустоту. Это тоже как-то понятно..... Часть объектов, способных к внедрению в IE для отображения неких объектов, например видео, не являются объектами IE как таковыми..... Т.е. ActiveX - объекты Windows......

Если я чего-то не правильно понимаю - поправте меня, плиз.

А теперь собственно вопросы:
1. Как можно в IE вытащить поддерживаеммые MIME и связанные с ним ActiveX и плагины
2. Возможен ли в браузерах выбор плагина, которым хочешь воспользоваться, если на один MIME зарегистрированно несколько плагинов или ActiveX компонентов ?

Маленькое примечание - относящееся к вопросу 2.
На сколько я понимаю опция classid имеющаяся в тэге OBJECT является спецификой Windows, а выбор плагина меня интересует без этой опции. Т.е. При динамическом формировании тэга OBJECT я должен указать только "type=[Некий MIME]"

Премного благодарен откликнувшимся......

Автор: dstorm81 13.3.2006, 22:04
1 через плюгины из осла вытянуть что нить чрезвычайно сложно, возвражает пустой список и молчит как партизан smile, хотя через UID сможешь вытянуть некоторые программы установленные у пользователя


Код
var guidArDefin=new Array(' Address Book:','MS virtual machine:','Outlook Express:')
var guidArID=new Array('{7790769C-0471-11D2-AF11-00C04FA35D02}','{08B0E5C0-4FCB-11CF-AAA5-00401C608500}','{44BBA840-CC51-11CF-AAFA-00AA00B6015C}')

for(i=0;i<guidArDefin.length;i++)
{
document.write(guidArDefin[i])
try{if(document.getElementById('clntcps').isComponentInstalled(guidArID[i],'ComponentID')){document.write('<b>'+document.getElementById('clntcps').getComponentVersion(guidArID[i],'ComponentID')+'</b><br>')}else{document.write('<b>не установлен</b><br>')}}
catch(e){document.write('<b>провал теста</b><br>')}
}



2 а там уже по обстоятельствам что имеем то и генерим, что желательней
З.Ы. UID могут в версиях винды меняться, так что исчи в нете, и не все UID можно прочесть, система не даст

Автор: Sardar 8.4.2006, 14:51
dstorm81, похоже код вырезан откуда то и не проверен, он должен кидать исключения т.к. сам обьект кого опрашиваем у тебя не существует (строка document.getElementById('clntcps')) и clientcaps bechavior к обьекту ты не привязал.

Пользуем http://msdn.microsoft.com/workshop/author/behaviors/reference/methods/iscomponentinstalled.asp?frame=true, что может пока дать только id компонента. Достаточно что бы подтвердить его существование. Опросить можно только http://msdn.microsoft.com/workshop/author/behaviors/reference/methods/detectable.asp компоненты, иначе вроде как не "секьюрно" smile

Рабочий код целиком:
Код
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html xmlns:IE>
<head>
    <title>Untitled</title>
<style type="text/css">
@media all {
      IE\:clientCaps {behavior:url(#default#clientcaps)}
}
</STYLE>

</head>
<body>
<IE:clientCaps ID="clntcps"/>

<script type="text/javascript">
<!--
var guidArDefin=new Array('Address Book:','MS virtual machine:','Outlook Express:');
var guidArID=new Array('{7790769C-0471-11D2-AF11-00C04FA35D02}','{08B0E5C0-4FCB-11CF-AAA5-00401C608500}','{44BBA840-CC51-11CF-AAFA-00AA00B6015C}');

for(i=0;i<guidArDefin.length;i++) {
  document.write(guidArDefin[i]);
  try {
    if(document.getElementById('clntcps').isComponentInstalled(guidArID[i],'ComponentID')) {
       document.write('<b>'+document.getElementById('clntcps').getComponentVersion(guidArID[i],'ComponentID')+'</b><br>');
    } else {
       document.write('<b>не установлен</b><br>');
    }
  } catch(e) {
    document.write('<b>Была трабла: '+e.description+'</b><br>');
  }
}
//-->
</script>

</body>
</html>

Автор: dstorm81 8.4.2006, 19:43
2 Sardar вырезан с моей работающей страницы smile
З.Ы. ну забыл я вставить клиент капшион и его поведение smile
что пристрелить меня за это чтоли?
З.Ы.Ы. Сардар там между прочим не весь список указан, я в нете видел другой список (от мелкомягких+ другие), около 30 примерно

Автор: Sardar 8.4.2006, 19:55
Не, лучше исправлять пытками smile
Шучу, просто не рабочий код отбивает обычно желание у человека разбираться дальше, а путь то был верный, хоть и не совсем удобный.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)