Stefan: object-tag dynamisch an Browser anpassen

Hallöchen,

ich möchte ein Applet mit dem object-Tag einbinden. Leider möchte der IE die classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" und das *.class-File als param name="code". Alle anderen Browser brauchen aber als classid "java:Wuerfel3.class" oder wie halt das class-File heißt.

Deshalb hab ich 'ne kleine JavaScript-Funktion geschrieben, die die classID dynamisch setzt. Es scheint auch zu funktionieren - zumindest nach dem, was alert mir da ausgegeben hat - aber es funktioniert nicht (habs ohne JS getestet, da funktioniert's, es muss also an der Umsetzung liegen).

Tausend Dank schonmal für eure Antworten :)

  1. Hallo, Stefan!

    (habs ohne JS getestet, da funktioniert's, es muss also an der Umsetzung liegen).
    Tausend Dank schonmal für eure Antworten :)

    schön. :-)
    und wenn du uns jetzt noch deinen code zeigen könntest, wären wir auch in der lage, nach dem fehler zu suchen.

    freundl. Grüsse aus Berlin, Raik

    1. Ui. Na eigentlich hatte ich den als Bild eingebunden und ich seh ihn auch, wenn ich mir den Post anschaue.

      Nichtsdestotrotz hier nochmal die URL für den Code, falls es nicht funktioniert:

      http://www.sensemann.com/temp/applet.png

      1. Hallo, Stefan!

        Ui. Na eigentlich hatte ich den als Bild eingebunden und ich seh ihn auch, wenn ich mir den Post anschaue.

        ja, war etwas unglücklich. mein script hats einfach ausgeblendet.

        guck mal hier (ganz unten):
        http://www.dpunkt.de/java/Programmieren_mit_Java/Applets_und_Applikationen/5.html
        so gehts ohne javascript.

        freundl. Grüsse aus Berlin, Raik

        1. Danke erstmal,

          die idee war eigentlich, völlig auf nicht-unterstützte tags zu verzichten - also sowohl auf applet als auch embed.

          Es funktioniert auch gut mit zwei geschachtelten object tags, ein äußeres für den IE, ein inneres für den Rest, jeweils mit unterschiedlicher classid. Das einzige Problem dabei war, dass sobald im inneren object Parameter angegeben waren, der IE es auch als großen Platzhalter angezeigt hat neben "seinem" Applet.

          1. Hallo, Stefan!

            die idee war eigentlich, völlig auf nicht-unterstützte tags zu verzichten - also sowohl auf applet als auch embed.

            warum dann nicht einfach abhängig vom ergebnis der prüfung den richtigen code mit document.write schreiben?
            das problem wird sein, dass der browser beim einlesen der datei ein unvollständiges object findet und bei der zuweisung über das script den code nicht nochmal neu interpretiert.

            freundl. Grüsse aus Berlin, Raik

            1. Yup, mit document.writeln hat es funktioniert, das hilft mir aber nicht, denn das Dokument wird per XSLT erzeugt.
              Wenn ich das script im XSLT einfüge, dann darf dort kein Tag drinstehen, sonst ist das Stylesheet nicht mehr valid. Wenn ich aber für die Tag-Klammern Entities benutze (im XSLT), dann wird das Object-Tag als Text ausgegeben und nicht als Script. Ich muss das also per DOM machen.

              Kann man das Applet nicht irgendwie erst starten, nachdem das JS drübergelaufen ist?

              1. Hallo, Stefan!

                Yup, mit document.writeln hat es funktioniert, das hilft mir aber nicht, denn das Dokument wird per XSLT erzeugt.
                Wenn ich das script im XSLT einfüge, dann darf dort kein Tag drinstehen, sonst ist das Stylesheet nicht mehr valid. Wenn ich aber für die Tag-Klammern Entities benutze (im XSLT), dann wird das Object-Tag als Text ausgegeben und nicht als Script. Ich muss das also per DOM machen.

                Kann man das Applet nicht irgendwie erst starten, nachdem das JS drübergelaufen ist?

                das problem ist also offensichtlich, dass du das unvollständige applet nicht zuerst schreiben kannst, aber das javascript auch nicht, denn da existiert noch kein applet.
                dann musst du also das _ganze_ applet per javascript als element mit allen parametern dynamisch erzeugen und in den baum einhängen.

                freundl. Grüsse aus Berlin, Raik

                1. hallo raik,

                  ja.. das wollte ich auch tun, aber das xml, aus dem das xslt dann das object formt, enthält unbestimmt viele parameter. ich wollte einfach die params schon reinschreiben können, ohne dass ich sie alle der javascript-funktion übergeben muss.

                  wie mache ich das am besten in einer variable? als doppeltes array, also ein array, was wiederum arrays der länge 2 (name, value) enthält?

                  danke dir
                  stefan

                  1. Hallo, Stefan!

                    ja.. das wollte ich auch tun, aber das xml, aus dem das xslt dann das object formt, enthält unbestimmt viele parameter. ich wollte einfach die params schon reinschreiben können, ohne dass ich sie alle der javascript-funktion übergeben muss.

                    mit xml/xslt kenn ich mich nicht näher aus.

                    wie mache ich das am besten in einer variable? als doppeltes array, also ein array, was wiederum arrays der länge 2 (name, value) enthält?

                    ja, würd ich so versuchen.

                    freundl. Grüsse aus Berlin, Raik

          2. Hallo, Stefan!

            ... ein äußeres für den IE, ein inneres für den Rest, jeweils mit unterschiedlicher classid. Das einzige Problem dabei war, ...

            hast du es mal umgedreht ausprobiert? (das für den IE nach innen)
            nur so ne idee ...

            freundl. Grüsse aus Berlin, Raik

  2. Hurra, Lösung gefunden. Indem ich String.fromCharCode() genutzt habe konnte ich die Tags im Skript umgehen, sodass ich document.writeln() nutzen konnte.

    Danke nochmal für Deine Hilfe, Raik :)

    P.S.: Es hängt ein Bild mit Code an... nur falls es wieder geblockt wird ;)