plugin detection vom Browser
Matze
- javascript
Hallo,
ich habe hier ein Frage wie lese ich mit JavaScript meine Plugins vom Bowser aus?
Weil ich eine Lurawave Plugin Abfrage machen möchte im falle wenn der User das Plugin nicht hat das eine alternative kommt!
Aber ich weiß nicht wie ich an die Versionsnummern der Plugins sowie dere genaue Plugin Name für den Browser dran komme?
Danke!
Gruß Mathias
Hallo,
ich habe hier ein Frage wie lese ich mit JavaScript meine Plugins vom Bowser aus?
Weil ich eine Lurawave Plugin Abfrage machen möchte im falle wenn der User das Plugin nicht hat das eine alternative kommt!
Aber ich weiß nicht wie ich an die Versionsnummern der Plugins sowie dere genaue Plugin Name für den Browser dran komme?
Dass musst du den Hersteller des Plugin fragen. Es gibt keine standartisierte Schnittstelle zwischen Plugin und Browser.
Struppi.
Moin!
Dass musst du den Hersteller des Plugin fragen. Es gibt keine standartisierte Schnittstelle zwischen Plugin und Browser.
Oh, es gibt derer sogar zwei: Die Netscape-Schnittstelle und die Lösung über ActiveX beim IE. Wäre ja auch doof, wenn es keine definierte Lösung geben würde. Die Hersteller hätten heftig mehr zu tun und müßten jeweils den verwendeten Browser patchen, um ohne Schnittstelle daran anzudocken. Und das wäre dann wohl wirklich realitätsfern, denn wieviele Browserversionen gibt es allein von Netscape? Für die müßte jeweils ein individueller Patch geschrieben werden.
- Sven Rautenberg
Moin!
Dass musst du den Hersteller des Plugin fragen. Es gibt keine standartisierte Schnittstelle zwischen Plugin und Browser.
Oh, es gibt derer sogar zwei: Die Netscape-Schnittstelle und die Lösung über ActiveX beim IE. Wäre ja auch doof, wenn es keine definierte Lösung geben würde. Die Hersteller hätten heftig mehr zu tun und müßten jeweils den verwendeten Browser patchen, um ohne Schnittstelle daran anzudocken. Und das wäre dann wohl wirklich realitätsfern, denn wieviele Browserversionen gibt es allein von Netscape? Für die müßte jeweils ein individueller Patch geschrieben werden.
Klar, es gibt diese Schnittstelle, damit Programmierer die Funktionen des Plugins zu Verfügung stellen können, aber wie die das machen bleibt letztlich dem Plugin Hersteller überlassen. Also, es gibt schnittstellen, die man aber je nach Hersteller unterschiedlich nutzen kann (bzw. muss).
Struppi.
Hallo,
ich habe hier ein Frage wie lese ich mit JavaScript meine Plugins vom Bowser aus?
Informationen zu Netscape-kompatiblen Plugins kann man so erhalten:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Test by TM 03/03</title>
</head>
<body>
<script language="JavaScript" type="text/javascript">
<!--
for(var i=0;i<navigator.plugins.length;i++)
{
document.write(navigator.plugins[i].name+"<br>");
document.write(navigator.plugins[i].filename+"<br>");
document.write(navigator.plugins[i][0].type+"<br><br>");
}
//-->
</script>
</body>
</html>
MfG, Thomas
<script language="JavaScript" type="text/javascript">
<!--for(var i=0;i<navigator.plugins.length;i++)
{
document.write(navigator.plugins[i].name+"<br>");
document.write(navigator.plugins[i].filename+"<br>");
document.write(navigator.plugins[i][0].type+"<br><br>");
}//-->
</script>
Hallo
alles klar Netscape geht aber wie mache ich die Abfrage auf IE ?
Ich habe es so gemacht aber es geht nicht! :-(
---
<script language="JavaScript" type="text/javascript">
<!--
var ie= ("Microsoft Internet Explorer");
for(var i=0;i<ie.plugins.length;i++)
{
document.write(ie.plugins[i].name+"<br>");
document.write(ie.plugins[i].filename+"<br>");
document.write(ie.plugins[i][0].type+"<br><br>");
}
//-->
</script>
---
Ich habe auch in der Variable auch schon mit Explorer oder msie probiert aber alles ist falsch?
Kann mir hier jemand noch ein gutes JavaScript empfehlen? Wie ist das von Oreilly ?
Hallo,
alles klar Netscape geht aber wie mache ich die Abfrage auf IE ?
Der IE gibt fuer navigator.plugins.length 0 zurueck. Wenn man den Namen des ActiveX-Objektes kennt, kann man testweise eine Instanz davon erstellen und den Erfolg pruefen. Hier mal beispielhaft fuer SVG und PDF gezeigt:
try
{
var svgtest=new ActiveXObject("Adobe.SVGCtl.3");
}
catch(e)
{
alert("Adobe SVG-Plugin V3 nicht gefunden.");
}
if(svgtest)alert("Adobe SVG-Plugin V3 gefunden.");
try
{
var pdftest=new ActiveXObject("PDF.PdfCtrl.5");
}
catch(e)
{
alert("Acrobat PDF-Plugin V5 nicht gefunden.");
}
if(pdftest)alert("Acrobat PDF-Plugin V5 gefunden.");
Alternativ kann auch VBScript verwendet werden, siehe: http://www.styleassistant.de/tips/tip26.htm.
MfG, Thomas
Hallo,
alles klar Netscape geht aber wie mache ich die Abfrage auf IE ?
Der IE gibt fuer navigator.plugins.length 0 zurueck. Wenn man den Namen des ActiveX-Objektes kennt, kann man testweise eine Instanz davon erstellen und den Erfolg pruefen.
Nein den Namen des ActivXObjekts habe ich ja nicht, und den suche ich ja auch... Wie komme ich an den Namen herran? gibt es da einen Trick?
Hallo,
Nein den Namen des ActivXObjekts habe ich ja nicht, und den suche ich ja auch... Wie komme ich an den Namen herran? gibt es da einen Trick?
Suche einfach in der Registry systematisch nach "Ctl" oder "Ctrl" und Du wirst Objektnamen noch und noch finden. Der Name des Produktes oder der Firma steht dann im Namen und die Versionsnummer am Ende.
MfG, Thomas
Hallo Matze,
Weil ich eine Lurawave Plugin Abfrage machen möchte im falle wenn der User das Plugin nicht hat das eine alternative kommt!
So, ich habe mich jetzt eine halbe Stunde lang mit dem Lurawave-Plugin beschäftigt, schließlich muss ich meine Aussagen aus [pref:t=40185&m=220075] ff. beweisen. ;)
Ich habe mir mal das Lurawave-Plugin heruntergeladen und auf einem Windowsrechner installiert. Dann habe ich mir angesehen, wie die Bilder eingebunden werden. Das sieht für JPEG2000-Bilder so aus: (die anderen beiden Format, die vom Plugin abgedeckt werden, variieren leicht)
<object width="..." height="..." classid="CLSID:0D4B9606-1FEF-43B0-B76E-43150B060AEB" codebase="http://www.lurawave.de/download/bin/jp2x.cab#Version=1,1,3,11">
<param name="SRC" value="datei.jp2"></param>
<param name="PROGRESSIVE" value="1"></param>
<embed type="image/jp2" width="200" height="50" src="datei.jp2" progressive="0" pluginurl="http://www.lurawave.de/download/bin/npjp2.jar"></embed>
</object>
Also eine typische Konstruktion
<object classid="CLSID:dieser MS-CLSID-Schrott" ...>
<param ...>
<embed ...></embed>
</object>
Bei dieser Konstruktion ist es unter einigen Browsern (z.B.) nicht möglich, Alternativtexte einzufügen, ohne eine JS-Erkennung durchzuführen.
Ich habe dagegen mal versucht, den CLSID-Schrott rauszuschmeissen. Dabei ist folgendes rausgekommen:
<object width="..." height="..." data="datei.jp2" type="image/jp2">
<param name="SRC" value="datei.jp2"></param>
<param name="PROGRESSIVE" value="1"></param>
<p>
Hier kommt der Alternativtext hin!
</p>
</object>
Ich habe das im Mozilla 1.2.1 (Windows 98 SE und Linux) sowie im Microsoft Internet Explorer 5.0 getestet und beide machen anstandslos folgendes:
- Wenn das Plugin installiert ist, zeigen sie das Bild an.
- Wenn das Plugin nicht installiert ist, zeigen sie die Alternativinhalte an.
Auf dem Windowsrechner waren leider keine anderen Browser zum Testen installiert, nachdem aber nach dem gleichen Schema Flash auch anders eingebunden werden kann - und es dort dann auch in Opera, Konqueror und Netscape 4 richtig funktioniert - gehe ich davon aus, dass es hier genauso der Fall sein wird.
Ich habe hier mal eine Testseite hochgeladen, die das JPEG2000-Bild, das auf http://www.lurawave.de/products/testcenter/index.jsp eingebunden ist, referenziert:
http://www.christian-seiler.de/temp/lw-test.html
Diese Methode ist:
- valide (<embed> ist kein gültiges HTML-Element!)
- standardkonform (so will es das W3C)
- simpel und klein
- und außerdem erlaubt sie das einfach Einbinden von Alternativinhalten
Die Alternativinhalte können natürlich jegliche Art von HTML-Quellcode sein, auch Bilder - ich habe hier einfach nur einen Text eingebunden.
So, damit wäre hoffentlich meine These aus dem anderen Thread bewiesen.
Christian