Flo: Browsercheck

hi,

ich soll eine Browserchek mit JavaScript programmieren. Der Check soll so gebaut sein, dass er nur beim Internet Explorer weitergeht. Die Scripte müssen also nur unter dem IE laufen.
Alle Anforderungen kommen so vom Kunden. Einige sind in meinen Augen sinnlos oder nicht nötig. Ich muss sie aber trotzdem alle erfüllen.
Ich stoße auf folgende Probleme:

1.) ActivX
Es muss ActivX aktiviert sein. Wie kann ich das mit JavaScript überprüfen?

2.) Kann ich mit JavaScript überprüfen, ob der MediaPlayer installiert ist?

3.) Als ich das Scipt das allererste mal unter Netscape getestet habe, konnte ich wunderbar alle benötigten Plugins auf Vorhandensein mit folgendem Script überprüfen:

var pluginsArray = new Array("Flash", "Tegrity"); //Alle benoetigten Plugins

var checkArray = new Array(); // Array zum Speichern der Zustaende der einzelnen Tests
var index = new Array(); //Zaehler fuer for Schleifen

for (index[0]=0;index[0] < pluginsArray.length; index[0]++)
{
  checkArray[pluginsArray[index[0]]]=false;
  for (index[1]=0;index[1] < navigator.plugins.length; index[1]++)
  {
    if ((eval("/" + pluginsArray[index[0]] + "/i")).test(navigator.plugins[index[1]].name))
    {
      checkArray[pluginsArray[index[0]]]=true;
      break;
    }
  }
}

ich habe erst jetzt gemerkt, dass es navigator.plugins nur unter Netscape gibt. Gibt es eine ähnliche Methode unter dem Internet Explorer, um alle benötigten Plugins zu suchen? Ich habe gelsen, dass es mit JavaScript unter dem Explorer generell nicht möglich sein soll und dass man auf VisuelBasic oder ActivX zurückgreifen muss. Damit hab ich aber leider gar keine Erfahrungen.

Danke für eure Hilfe

Flo

  1. Moin Moin !

    1.) ActivX
    Es muss ActivX aktiviert sein. Wie kann ich das mit JavaScript überprüfen?

    Falls Du ActiveX meinst: Versuche, einen Dummy-Control zu laden, der irgendeine JS-Variable ändert oder ähnliches.

    2.) Kann ich mit JavaScript überprüfen, ob der MediaPlayer installiert ist?

    Nein, Media Player ist eine Applikation unter Windows, nicht ein Teil des Browsers. (Obwohl es unter Ausnutzung von Bugs vielleicht funktioniert.) Falls Du den Media Player als Plugin benutzen willst: Probier's einfach, ob das Plugin geladen wird (siehe auch OBJECT-Tag in SelfHTML).

    3.) Als ich das Scipt das allererste mal unter Netscape getestet habe, konnte ich wunderbar alle benötigten Plugins auf Vorhandensein mit folgendem Script überprüfen:

    ich habe erst jetzt gemerkt, dass es navigator.plugins nur unter Netscape gibt. Gibt es eine ähnliche Methode unter dem Internet Explorer, um alle benötigten Plugins zu suchen?

    Falsch. navigator.plugins ist erstens Standard und zweitens ein Objekt, keine Methode.

    Ich habe gelsen, dass es mit JavaScript unter dem Explorer generell nicht möglich sein soll

    Der IE rückt die Plugin-Infos einfach nicht raus. navigator.plugins existiert aber trotzdem (leer).

    und dass man auf VisuelBasic oder ActivX zurückgreifen muss.

    Visual Basic, ActiveX

    Damit hab ich aber leider gar keine Erfahrungen.

    Google ist Dein Freund.

    Wenn das Projekt für ein Intranet ist, probier so lange rum, bis es geht. Wenn es für das große weite Internet ist, solltest Du dem Kunden dringend von dieser Implementierung abraten.

    Alexander

    --
    Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so!"
  2. Hallo,

    Ich habe gelsen, dass es mit JavaScript unter dem Explorer generell nicht möglich sein soll und dass man auf VisuelBasic oder ActivX zurückgreifen muss. Damit hab ich aber leider gar keine Erfahrungen.

    Um genau zu sein: mit VBScript und ActiveX. Das Prinzip ist folgendes: Plugins, wie der Netsi sie kennt, unterstützt der IE nicht mehr - man ist gezwungen, alles über ActiveX-Controls zu regeln. Um zu testen, ob dieses ActiveX-Control vorhanden ist (und - en passant - falls ja, weiß man dann, dass ActiveX aktiviert ist), versucht man, eine Instanz des Controls zu erzeugen und schaut dann, ob es geklappt hat.

    Hier ein Beispiel für eine Überprüfung, ob der IE das Flash5-Plugin installiert hat:

    <script type="text/vbscript" language="VBScript">

    on error resume next  ' damit's bei nem Fehler trotzdem weiter geht
    var ieFlash5          ' Variable instanziiert

    ieFlash5 = IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.5"))
                          ' CreateObject erzeugt eine Instanz des
                          ' ActiveX-Controls. IsObject überprüft,
                          ' ob das, was ihm übergeben wurde, ein
                          ' Objekt ist - ergibt true, wenn das Control
                          ' da ist, und false, wenn nicht

    </script>

    Auf die Variable ieFlash5 kann man dann anschließend übrigens auch via JavaScript zugreifen.

    Grüße,

    Utz

    1. Hi,

      danke für den Tipp. Ich kann das allerdings erst am Montag testen. Mal sehen, obs funktioniert.

      thx

      Flo