+ JAVA: aktive Java VM im IE?
MudGuard
- javascript
0 Axel Richter0 MudGuard
Hi,
ich suche eine Möglichkeit, im Internet Explorer per Javascript festzustellen, welche Java VM für die Ausführung eines Applets verwendet wird, ob es die Microsoft VM oder die Sun VM ist.
Es reicht, wenn der Test im Internet Explorer funktioniert, da alle anderen Browser meines Wissens immer das Sun-Java-VM-Plugin benutzen - ich würde also nur in einem Internet Explorer diesen Test auch durchführen:
var vm = "none";
if (navigator.javaEnabled())
{
vm = "Sun";
if (document.all && istDieVerwendeteJavaVMvonMS())
{
vm = "MS";
}
}
Was müßte hier anstelle von istDieVerwendeteJavaVMvonMS() stehen?
Mit navigator.javaEnabled erfahre ich nur, ob eine Java VM verfügbar ist (vorhanden und aktiviert), aber nicht welche.
Mit navigator.plugins geht es nicht, da das unter dem Internet Explorer nicht existiert.
Nötig ist die Unterscheidung, da das eigentliche Applet ein signiertes Applet ist - und die Microsoft VM erkennt eine Signatur nur in einem CAB-File, während die Sun VM ein signiertes jar erfordert.
Gebe ich aber im Applet-Element im archive-Attribut beides an, wird auch beides heruntergeladen.
Ich habe zwar eine Lösung für die Java VM Erkennung, aber diese erfordert ein Extra-Applet nur für die Erkennung (das Applet wird in die Seite eingehängt, prüft beim Start selbst, unter welcher Java-VM es läuft und gibt diese Information durch Aufruf einer Javascript-Funktion an Javascript weiter.
Schöner wäre jedoch eine Lösung ohne dieses zusätzliche Applet.
Ach so ja, die Abhängigkeit von Javascript macht in diesem Fall nichts aus, da das in diesem Fall sowieso aktiv sein muß...
Meine Suche im Archiv, SelfHTML und Google hat nichts ergeben, aber vielleicht kennt ja hier einer einen Trick?!
Vielen Dank im Voraus für Eure Mühe!
cu,
Andreas
Hallo Andreas,
ich suche eine Möglichkeit, im Internet Explorer per Javascript festzustellen, welche Java VM für die Ausführung eines Applets verwendet wird, ob es die Microsoft VM oder die Sun VM ist.
Mit navigator.javaEnabled erfahre ich nur, ob eine Java VM verfügbar ist (vorhanden und aktiviert), aber nicht welche.
Mit navigator.plugins geht es nicht, da das unter dem Internet Explorer nicht existiert.
Doch, verweist aber einfach auf document.embeds, was nicht sehr hilfreich ist.
http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/collections/plugins_0.asp
Nötig ist die Unterscheidung, da das eigentliche Applet ein signiertes Applet ist - und die Microsoft VM erkennt eine Signatur nur in einem CAB-File, während die Sun VM ein signiertes jar erfordert.
Warum zwingst Du nicht einfach alle Browser, die Sun VM zu verwenden? Die Microsoft VM wird je ohnehin mit WinXP gar nicht mehr ausgeliefert.
http://java.sun.com/j2se/1.4.1/docs/guide/plugin/developer_guide/using_tags.html
Hiermit wird die Microsoft-VM verwendet:
<APPLET code="XYZApp.class" codebase="html/" align="baseline"
width="200" height="200">
<PARAM name="model" value="models/HyaluronicAcid.xyz">
No Java 2 SDK, Standard Edition v 1.4.1 support for APPLET!!
</APPLET>
Hiermit wird die Sun VM verwendet und ggf. heruntergeladen:
<OBJECT classid="clsid:CAFEEFAC-0014-0001-0000-ABCDEFFEDCBA"
width="200" height="200" align="baseline"
codebase="http://java.sun.com/products/plugin/autodl/jinstall-1_4-windows-i586.cab#Version=1,4,1,mn">
<PARAM name="code" value="XYZApp.class">
<PARAM name="codebase" value="html/">
<PARAM name="type" value="application/x-java-applet;jpi-version=1.4.1">
<PARAM name="model" value="models/HyaluronicAcid.xyz">
<PARAM name="scriptable" value="true">
No Java 2 SDK, Standard Edition v 1.4.1 support for APPLET!!
</OBJECT>
Mit:
<OBJECT classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" ...
wird eine vorhandene Sun VM verwendet, auch wenn die Version nicht mit der angegebenen Version übereinstimmt.
viele Grüße
Axel
Hi,
Warum zwingst Du nicht einfach alle Browser, die Sun VM zu verwenden? Die Microsoft VM wird je ohnehin mit WinXP gar nicht mehr ausgeliefert.
Weil viele Firmen mit insgesamt einigen Tausend verschiedensten Computern betroffen sind, die nicht alle neu und auch nicht alle mit XP ausgestattet sind, die auch nicht alle durch neue Computer ersetzt werden können, ...
Und in vielen Fällen sind die betroffenen User nicht berechtigt, Plugins zu installieren...
Trotzdem Danke für Deine Bemühungen.
Aber Du hast mich auf eine Idee gebracht, die werde ich mal ausprobieren (<applet...> als Alternativ-Inhalt fürs <object>).
cu,
Andreas