Applet XHTML 1.0 Strict konform einbinden

Das applet-Element ist seit HTML 4.01 deprecated und in XHTML 1.0 strict nicht enthalten, du mußt stattdessen auf das object-Element ausweichen:

Code:
<object classid="java:IRCApplet.class"
        archive="irc.jar,pixx.jar"
        type="application/x-java-applet"
        height="800"
        width="400">
</object>

Der IE 6 kommt damit allerdings nicht zurecht, der IE-kompatible Code sieht wie folgt aus:
Code:
<object classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" 
        height="800"
        width="400" > 
  <param name="code" value="IRCApplet.class" />
  <param name="archive" value="irc.jar,pixx.jar" />
</object>

Du kannst die beiden Objekte ineinander verschachteln und das äußere object-Element durch konditionale Kommentare vor dem IE "verstecken", alle anderen Browser mit installierter JRE interpretieren das äußere object-Element und ignorieren das innere.

greetings, Keita
 
mit verstecken Kommentaren kenne ich mich nicht aus, wie genau sieht das aus?
 
Das ganze sähe in etwa so aus:
Code:
<!--[if !IE]>
<object classid="java:IRCApplet.class"
        archive="irc.jar,pixx.jar"
        type="application/x-java-applet"
        height="800"
        width="400">
<![endif]-->
<object classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" 
        height="800"
        width="400" > 
  <param name="code" value="IRCApplet.class" />
  <param name="archive" value="irc.jar,pixx.jar" />
</object>
<!--[if !IE]>
</object>
<![endif]-->

Der IE evaluiert die konditionalen Kommentare und interpretiert das äußere object-Element, alle anderen Browser betrachten die Kommentare als ebensolche und interpretieren nur das innere object-Element.

greetings, Keita
 
Der Ansatz ist okay, aber im Beispiel wurde dem IE ja gerade verboten die Conditional Comments auszulesen, die die anderen Browser ebenso ignorieren.

Probiers mal so rum:

HTML:
<!--[if IE]>
<object classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" 
        height="800"
        width="400" > 
  <param name="code" value="IRCApplet.class" />
  <param name="archive" value="irc.jar,pixx.jar" />
<![endif]-->
<object classid="java:IRCApplet.class"
        archive="irc.jar,pixx.jar"
        type="application/x-java-applet"
        height="800"
        width="400">
</object>
<!--[if IE]>
</object>
<![endif]-->
 
vielen Dank, jetzt gehts.
 
Hoppala, da war ich wohl im Halbschlaf :D Du solltest das ganze noch mit dem IE7 testen, u.U. interpretiert er das äußere object-Element (bezogen auf PuppetMasters Code) nicht korrekt, wovon ich aber nicht ausgehe.

greetings, Keita
 
damn, der IE7 versaut es wirklich, soll ich jetzt "if IE <6" oder sowas schreiben bzw. wie kann ich verhindern, dass der IE7 das hier:
Code:
<object classid="java:IRCApplet.class"
        archive="irc.jar,pixx.jar"
        type="application/x-java-applet"
        height="400"
        width="800">
liest?
Ohne den gehts ohne Probleme.
 
Zuletzt bearbeitet:
Der IE kennt für conditional comments einige Operatoren:

  • lt (less than): <!--[if lt IE7]> => wenn kleiner als IE7
  • gt (greater than): <!--[if gt IE6]> => wenn größer als IE6
  • lte (less than or equal to: <!--[if lte IE6]> => wenn kleiner als oder gleich IE6
  • gte (greater than or equal to): <!--[if gte IE5.5]> => wenn größer als oder gleich IE5.5
  • ! (not): <!--[if !IE7]> => wenn nicht IE7

Wenn du also bspw. alle IE-Version bis einschließlich 6.0 berücksichtigen willst, kannst du das mit

Code:
<!--[if lte IE6]>
...
<![endif]-->

oder

Code:
<!--[if lt IE7]>
...
<![endif]-->

erreichen.

greetings, Keita
 
aber so kann ich den Befehl für andere Browser nicht verstecken, oder?
 
Doch, doch, du mußt nur PuppetMasters Code ergänzen:

Code:
<!--[if lte IE6]>
<!-- wenn kleiner oder gleich IE 6 -->
<object classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" 
        height="800"
        width="400" > 
  <param name="code" value="IRCApplet.class" />
  <param name="archive" value="irc.jar,pixx.jar" />
<![endif]-->
<!-- für den Rest, also auch wenn größer als IE 6 -->
<object classid="java:IRCApplet.class"
        archive="irc.jar,pixx.jar"
        type="application/x-java-applet"
        height="800"
        width="400">
</object>
<!--[if IE]>
</object>
<![endif]-->

greetings, Keita
 
Heidewitzka, meine Leertaste klemmt/prellt seit ein paar Wochen und daher fehlen hier und da Leerzeichen oder es sind zwei statt einem... und wenn man dann noch mit copy&paste falschen Code dupliziert und nur die Versionsnummer austauscht, ist das Chaos komplett... :(

Die korrekte Bedingung für den conditional comment lautet:
Code:
<!--[if lte IE 6]>
bzw.
Code:
<!--[if lt IE 7]>
d.h. zwischen "IE" und der Versionsnummer gehört ein Leerzeichen. Teste mal mit den Fragmenten aus meinem ersten Posting, auf welche Version der IE 7 korrekt reagiert, wenn die MS-Entwickler nicht gepennt haben, sollte die erste Version funktionieren.

greetings, Keita
 
jetzt kommt bei meinem IE7 ein "rotes Kreuz-Kästen"
 
keiner ne Ahnung?
 
Das zweite

HTML:
<!--[if IE]>
</object>
<![endif]-->

könnte problematisch sein, da dies auch der IE7 ausliest. Mach' da ebenso ein

HTML:
<!--[if lte IE 6]>
</object>
<![endif]-->

draus.
 
Hallo,

hab das Thema hier ergoogled. Ich denke es fehlt der Parameter 'Nick'. Ich löse das ganze, im übrigen, immer etwas anders:
HTML:
<!--[if IE]>
<object classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" 
        height="800"
        width="400"> 
  <param name="code" value="IRCApplet.class" />
  <param name="archive" value="irc.jar,pixx.jar" /> <!-- Muss genauer Pfad sein -->
<![endif]-->
<!--[if !IE]>-->
<object classid="java:IRCApplet.class"
        archive="irc.jar,pixx.jar"
        type="application/x-java-applet"
        height="800"
        width="400">
<!--<![endif]-->
  <param name="nick" value="BeispielNick" />
  <!-- weitere Parameter hier -->
</object>
 
HTML:
<!--[if !IE]>-->

Dieser Kommentar wird allerdings von keinem Browser ausgelesen, der Inhalt ist unwirksam.
 

Ähnliche Themen

Zurück
Oben