object element mit js ansprechen
christian
- javascript
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
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
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
<param value="results.php" id="emb1"/> soll das heißen nicht embed :-)
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
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
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
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
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
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 :-(
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
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
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 :)