Sam: Mit JS Applet neue Parameter übergeben XHtml strict konform

Hallo

Ich hatte ein funktionierendes Applet, dem ich wie folgt neue Werte übergeben habe:

  
function NeueWerteFurApplet()  
{  
applet = document.applets[0];  
applet.setVisible("g", false);  
applet.evalCommand("A = (0,"+t+")");  
applet.evalCommand("B = (1,"+(t+m)+")");  
applet.setVisible("g", true);  
}  

Das hat auch alles wunderbar geklappt.

Nun wollte ich das ganze auf xhtml-strict umbauen. Der xhtml-Code ist nun folgender (<applet> ist ja untersagt):

  
<div>  
<!--[if !IE]> Hidden to IE -->  
    <object id="appletAll" classid="java:geogebra.GeoGebraApplet.class" type="application/x-java-applet"  
                archive=<?php echo '"'.$path.'Geogebra/geogebra.jar" ';?> width="671" height="476">  
        <param name="filename" value="geradeablesen.ggb" />  
        <param name="framePossible" value="false" />  
        <param name="showResetIcon" value="false" />  
        <param name="enableRightClick" value="false" />  
        <param name="showMenuBar" value="false" />  
        <param name="showToolBar" value="false" />  
        <param name="showToolBarHelp" value="false" />  
        <param name="showAlgebraInput" value="false" />  
  
<!--<![endif]-->  
    <object id="appletIE" classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"  width="671" height="476">  
        <param name="code" value="geogebra.GeoGebraApplet" />  
        <param name="archive" value=<?php echo '"'.$path.'Geogebra/geogebra.jar" ';?> />  
        <param name="filename" value="geradeablesen.ggb" />  
        <param name="framePossible" value="false" />  
        <param name="showResetIcon" value="false" />  
        <param name="enableRightClick" value="false" />  
        <param name="showMenuBar" value="false" />  
        <param name="showToolBar" value="false" />  
        <param name="showToolBarHelp" value="false" />  
        <param name="showAlgebraInput" value="false" />  
        Sorry, the GeoGebra Applet could not be started. Please make sure that  
        Java 1.4.2 (or later) is installed and active in your browser  
        (<a href="http://java.sun.com/getjava">Click here to install Java now</a>)  
    </object>  
<!--[if !IE]> Hidden to IE -->  
        </object>  
<!--<![endif]-->  
</div>  

Und dazu hab ich folgende JS Funktion versucht:

  
function NeueWerteFurApplet(){  
         applet1 = document.getElementById('appletIE');  
         applet2 = document.getElementById('appletAll');  
         applet1.setVisible("g", false);  
         applet2.setVisible("g", false);  
         applet1.evalCommand("A = (0,"+t+")");  
         applet2.evalCommand("A = (0,"+t+")");  
         applet1.evalCommand("B = (1,"+(t+m)+")");  
         applet2.evalCommand("B = (1,"+(t+m)+")");  
         applet1.setVisible("g", true);  
         applet2.setVisible("g", true);  
}  

Leider funktioniert jetzt das ganze nicht mehr. Wie kann ich dem Applet trotz <object>-Tag die Werte übergeben beziehungsweise überschreiben?

In Google hab ich dazu nix gefunden (Falsch gesucht?).

Danke im Voraus!

Sam

  1. Hallo Sam,

    Das hat auch alles wunderbar geklappt.
    Leider funktioniert jetzt das ganze nicht mehr.

    stelle doch bitte mal beide Versionen irgendwo online. Dann kann man sich auch die Fehlermeldungen im eigenen Browser ansehen, dass sich unter Deinem dürftigen "klappt" und "funktioniert nicht mehr" etwas vorstellen kann.

    Gruß aus Berlin!
    eddi

    1. Hallo Eddi

      Im Moment befindet sich das Ganze hier:
      http://www.ksobwalden.ch/~samuel/Test/Geraden/geradeablesen.php

      Hoffe es Hilft...

      Gruss
      Sam

      1. Re:

        Im Moment befindet sich das Ganze hier:
        http://www.ksobwalden.ch/~samuel/Test/Geraden/geradeablesen.php

        Es erscheint zuerst eine Warnung mit Frag der Java-Umgebung in Form  mit dem Inhalt "Die digitale Signatur  der Anwendung weist einen Fehler auf. Möchten Sie die Anwendung ausführen?". Im Detail wird bemängelt:

        - "Diese Anwendung wird ohne die normalerweise von Java bereitgestellten Sicherheitseinschränkungen ausgeführt."
         - "Die digitale Signatur ist abgelaufen."

        Es erscheint alsdann ein Koordinatensystem mit Funktionsdiagramm für f(x)=x+3. Während des Ladevorgangs des Webdokuments kommt es zu einem JavaScript-Fehler durch Zeile 45 in der geradeablesen.js. Das Objekt applet1 hat keine Methode setVisible(). Dieser Fehler wird durch anklicken des Buttons "Neue Aufgabe" wiederholt. Durch betätigen des Buttons "" wird ein JavaScript-Fehler in Zeile 134 selber externer Datei ausgelöst. Das Objekt document hat keine Eigenschaft Para. Die erbetene Vergleichsmöglichkeit zum vormals funktionierenden Quellcode unterblieb.

        Ich frage Dich, ob meine Schilderungen undeutlich oder nicht nachvollziehbar ist, und wenn Du zum Ergebnis kommen solltest, dass dem nicht so ist, frage ich Dich warum ich Dir alles aus der Nase ziehen soll, um Dir helfen zu dürfen; während Du Dich unfähig zeigst, eine deutliche und nachvollziehbare Problemschilderung abzuliefern.

        Gruß aus Berlin!
        eddi

        --
        Es ist ja nicht schlimm, dass sie nicht lesen, schreiben oder gar denken können.
        Sie dürfen wählen...
        1. Hallo Eddi

          Ich bin dir für deine Bemühungen sehr dankbar! Offensichtlich bin ich zu neu in dem Geschäft, dass ich mich nicht klar ausdrücken kann. Deine Fehlermeldungen verstehe ich und kann sie auch reproduzieren, meine Frage bleibt jedoch offen. Ich versuche die Frage nochmal zu formulieren und hoffe, dass du nun aus meiner Frage schlau wirst:

          1. Ich arbeite mit einem geogebra-applet geogebra.at, das ich in die Seite einbinde.

          2. Das Applet zeichnet eine Gerade der Form f(x)=mx+b

          3. Ich würde dem Applet gerne die Steigung m und den Achsenabschnitt b übergeben, beziehungsweise verändern.

          4. Geogebra hat für die Kommunikation zwischen JS und dem Applet folgende einige Funktionen bereitgesttellt: http://www.geogebra.org/en/wiki/index.php/GeoGebra_JavaScript_Method

          5. Mit dem <applet>-Tag in normalem HTML scheint das ziemlich gut zu funktionieren. Ich hab mal ein minimalbeispiel erstellt, wo man sieht wie das in etwa gehen sollte. http://www.ksobwalden.ch/~samuel/Test/Geraden/MitAppletTag.php

          6. Auf meinen Seiten möchte ich aber den XHTML strict Standard verwenden, der den <applet>-Tag unterbindet. Anstelle dessen nun der <object>-Tag gestellt wird. Mit dem <object>-Tag ist aber document.applet[0] nicht mehr möglich, ich hab also keinen Zugriff auf die Funktionen des Applets.

          7. Gibt es eine Möglichkeit, die Funktionen des Applets anzusprechen, beziehungsweise Werte zu übergeben ohne auf den <applet>-Tag zurückgreiffen zu müssen? Ich abs mit getElementById() versucht, habs aber nicht hingekriegt.

          Ich hoffe, dass meine Problematik nun etwas besser zur Geltung kommt. Danke, dass du dir die Zeit nimmst!

          Grüsse
          Sam

          1. Hei!

            Es hat nun doch geklappt...

              
                     var applet1;  
                     var applet2;  
                     var steigung=m[0]/m[1];  
                     applet1 = document.getElementById('appletAll');  
                     applet1.setVisible("g", false);  
                     applet1.evalCommand("A = (0,"+t+")");  
                     applet1.evalCommand("B = (1,"+(t+steigung)+")");  
                     applet1.setVisible("g", true);  
              
                     applet2 = document.getElementById('appletIE');  
                     applet2.setVisible("g", false);  
                     applet2.evalCommand("A = (0,"+t+")");  
                     applet2.evalCommand("B = (1,"+(t+steigung)+")");  
                     applet2.setVisible("g", true);  
            
            

            So funktioniert's. Ich hab eigentlich nix falsch gemacht gehabt. Was ich neu reingenommen habe sind die Initialisierungen von applet1 und applet2.
            Ein wirklicher Anfängerfehler...

            Ich danke dir Eddi, dass du dir Zeit genommen hast und hoffe, dass ich deine Frustrationsgrenze nicht ausgelotet hab mit meiner Unfähigkeit Fragen zu stellen. Ich werd mich weiter darin üben.

            Gruss
            Sam

            1. Frustrationsgrenze

              Das sind dann immer die Momente, wo alles in einem nach Nikotin schreit, auch wenn man sich davon losgesagt hat. ;)

              Gruß aus Berlin!
              eddi