Browsercheck
Flo
- javascript
0 Alexander Foken0 Utz0 Flo
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
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
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
Hi,
danke für den Tipp. Ich kann das allerdings erst am Montag testen. Mal sehen, obs funktioniert.
thx
Flo