christian: object element mit js ansprechen

hi!

hab eine webapp geschrieben mit php/ajax/js.

folgendes problem:

um die app xhtml1.1 zu bekommen muss ich ja auf iframe verzichten (und das ist gut so). jetzt gibts die möglichkeit über das object element content reinzuladen:

<object data="results.php" type="text/html" name="obj">
   <param name="src" value="results.php" id=results" />
</object>

und ich hätte gerne gewußt wie ich per javascript dem object mitteile dass seine data geändert wird und es den conent neu holen soll, á la

document.getElementById("iframe_id").scr = "neuedaten.php";

gibt es diese möglichkeit fürs object element auch?

danke für die antworen im voraus, lg christian

  1. hi,

    um die app xhtml1.1 zu bekommen muss ich ja auf iframe verzichten (und das ist gut so).

    Warum nutzt du XHTML 1.1?

    und ich hätte gerne gewußt wie ich per javascript dem object mitteile dass seine data geändert wird und es den conent neu holen soll, á la

    document.getElementById("iframe_id").scr = "neuedaten.php";

    gibt es diese möglichkeit fürs object element auch?

    Auch ein Object kann eine ID bekommen.
    Du möchtest nicht .src einen neuen Wert zuweisen, sondern .data.
    Ob das Object darauf allerdings auch mit neu laden der Daten reagiert, müsstest du ausprobieren.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Warum nutzt du XHTML 1.1?

      warum nicht?

      Auch ein Object kann eine ID bekommen.
      Du möchtest nicht .src einen neuen Wert zuweisen, sondern .data.
      Ob das Object darauf allerdings auch mit neu laden der Daten reagiert, müsstest du ausprobieren.

      mhm, das object hat jetzt folgendes aussehen:

      <object data="results.php" id="obj1">
         <embed value="results.php" id="emb1"/>
      </object>

      mittels js angesprochen:

      document.getElementById("obj1").data = "results.php?asdf=1";
      document.getElementById("emb1").value = "results.php?asdf=1";

      daten werden nicht neu nachgeladen

      1. <param value="results.php" id="emb1"/> soll das heißen nicht embed :-)

      2. hi,

        Warum nutzt du XHTML 1.1?

        warum nicht?

        Warum?
        Welche Vorteile hast du dadurch?

        Lieferst du es auch wirklich unter Content-Type aus, der dem Browser sagt, er soll es als XML verarbeiten?

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. Warum?
          Welche Vorteile hast du dadurch?

          barrierefreiheit zB, trennugn von content und darstellung

          Lieferst du es auch wirklich unter Content-Type aus, der dem Browser sagt, er soll es als XML verarbeiten?

          natürlich <?xml version="1.0" encoding="utf-8"?>

          wer das mal mit createElement probieren

          lg christian

          1. hi,

            Welche Vorteile hast du dadurch?

            barrierefreiheit zB, trennugn von content und darstellung

            Dafür brauchst du kein XHTML 1.1 mit allen seinen derzeit noch vorhandenen Nachteilen im Praxiseinsatz, das kannst du auch mit XHTML 1.0 Strict oder sogar auch mit HTML 4.01 haben.

            Lieferst du es auch wirklich unter Content-Type aus, der dem Browser sagt, er soll es als XML verarbeiten?

            natürlich <?xml version="1.0" encoding="utf-8"?>

            Das ist nicht der Content-Type aus dem Server Response, sondern der XML-Prolog.

            gruß,
            wahsaga

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }
          2. Hallo,

            Welche Vorteile hast du [durch XHTML 1.1]?

            barrierefreiheit zB, trennugn von content und darstellung

            Verzeihung, aber wer hat dir diesen Unfug erzählt, wo hast du das gelesen? Woher kommen diese Mythen?

            Mathias

            --
            »No nations, no borders.«
            Visitenkarte · SELFHTML Weblog
      3. Hallo,

        <object data="results.php" id="obj1">
        </object>

        document.getElementById("obj1").data = "results.php?asdf=1";

        Bekannter Browserfehler. Du kannst einmal versuchen, das object-Element komplett neu ins Dokument zu schreiben (über DOM mit creatElement usw. oder über innerHTML bzw. outerHTML). Dann beachten die Browser die Änderung vermutlich.

        Das object-Element wird allgemein noch schlecht unterstützt. Mit iframe hast du das Problem ganz sicher nicht, daher solltest du XHTML 1.0 Transitional verwenden.

        Mathias

        --
        »No nations, no borders.«
        Visitenkarte · SELFHTML Weblog
        1. danke für den tip, hab jettz folgenden code im html file:

          <div id="tbl"></div>

          und js:

          var objDiv = document.getElementById("table");
          var obj = document.createElement("object");
          var prm = document.createElement("param");

          var objId = document.createAttribute("id");
          objId.nodeValue = "obj_results";

          var objData = document.createAttribute("data");
          objData.nodeValue = "results.php";

          obj.setAttributeNode(objId);
          obj.setAttributeNode(objData);

          var paramName = document.createAttribute("name");
          paramName.nodeValue = "src";

          var paramValue = document.createAttribute("value");
          paramValue.nodeValue = "results.php";

          prm.setAttributeNode(paramName);
          prm.setAttributeNode(paramValue);

          obj.appendChild(prm);
          objDiv.appendChild(obj);

          und es tut sich weder beim FF noch bei IE war :-(

          1. Hallo,

            createAttribute und setAttributeNode vergiss gleich mal wieder, die sind unnötig umständlich und die Browser haben ihre Probleme damit. Attribute kannst du einfach über element.attributname = "wert"; setzen. Damit sollte es eigentlich gehen. Im Zweifelsfall kannst du dir im DOM-Inspector des Firefox ansehen, ob die Elemente korrekt erzeugt und eingehangen wurden.

            var objDiv = document.getElementById("table");
            Das heißt doch hoffentlich nur table, ist aber ein div, oder?

            Mathias

            1. Attribute kannst du einfach über element.attributname = "wert"; setzen.

              werd das mal testen

              var objDiv = document.getElementById("table");
              Das heißt doch hoffentlich nur table, ist aber ein div, oder?

              ja das is die id des divs und keine tabelle :-)

              mal danke im voraus

            2. also:

              selber html code wi vorhin
              aber js:

              var objDiv = document.getElementById("tbl");
                var obj = document.createElement("object");
                var prm = document.createElement("param");
                obj.id = "obj_results";
                obj.data = "results.php";
                obj.type = "text/html";
                prm.name = "src";
                prm.value = "results.php";

              obj.appendChild(prm);
                objDiv.appendChild(obj);

              funktioniert in firefox, ie sträubt sich :(, aber immerhin :)