Thread Probleme mit isComponentInstalled (3 answers)
Opened by morph at 2006-07-25 10:39

morph
 2006-07-25 10:39
#24852 #24852
User since
2007-12-06
79 Artikel
BenutzerIn
[Homepage] [default_avatar]
Servus Gemeinde.

Ich stehe vor einem Problem, dass mich regelrecht kirre macht. Meine Recherchen sagen mir, dass ich alles richtig mache, aber dem ist wahrscheinlich nicht so. Ich seh' den Wald vor lauter Bäumen nicht.

Zur Sache:
Der Kunde wünscht eine eingebettete Dokumenten-Vorschau, bevor das File auf den Server geladen wird. Ich möchte also über ein <OBJECT>, bzw. <EMBED> Tag den AcrobatReader einbinden. Jedoch möchte ich zuvor abprüfen, ob das Teil überhaupt installiert, bzw. ein Plugin vorhanden ist.

Folgender Code funktioniert einwandfrei in Gecko-Browsern und auch im IE, bzw. Opera. Das Dokument, respektive der Reader wird ordentlich eingebunden.
Code: (dl )
1
2
3
4
5
<object classid="CLSID:CA8A9780-280D-11CF-A24D-444553540000" type="application/pdf" data="/docs/beispiel.pdf" width="100%" height="100%">
<param name="src" value="/docs/beispiel.pdf">
<embed src="/docs/beispiel.pdf" type="application/pdf" width="100%" height="100%">
<noembed>Ihr Browser kann den MIME Typ application/pdf leider nicht verarbeiten!</noembed>
</object>


Das Ganze passiert template-basiert, sodass in der Quelle folgendes steht:
Code: (dl )
1
2
object classid="CLSID:<%clsid%>" type="<%doctype%>" data="<%document%>" width="100%" height="100%">
[...etc...]


Es werden die korrekten Werte übergeben. Das habe ich mehrmals geprüft!

Die Prüfung auf navigator.mimeTypes (Gecko-Browser) funzt einwadfrei, das habe ich auf zwei Rechnern getestet. Auf einem ist Acrobat installiert und auf dem Testsystem nicht. Falls das Plugin nicht vorhanden ist, kann der User es installieren.

Im Internet Explorer habe ich die Probleme. Folgender Code sollte eigentlich funktionieren, aber irgendwie will er nicht.
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[...]
function plugIE() {
var b=document.body;
b.addBehavior("#default#clientCaps");
return (b.isComponentInstalled("{CA8A9780-280D-11CF-A24D-444553540000}", "ComponentID"));
}
if(is_ie) r=plugIE(); else r=plugNS();
if(r){
// Das Dokument wird eingebunden;
}
else {
// Ein Hinweis wird ausgegeben;
}
[...]


Auch hier erfolgt das Einsetzen der CLSID templatebasiert. Auch hier werden die korrekten Werte übergeben. Auch hier habe ich das mehrmals geprüft.

Die Funktion plugIE() liefert immer false, obwohl das <OBJECT> Tag den Reader über den betreffenden Schlüssel (pdf.ocx) korrekt einbinden kann.

Ich bin in der Tat ratlos. :gruebel:

Bin für jede Anregung dankbar.

-uw

View full thread Probleme mit isComponentInstalled