replaceChild

Hi All,
ich möchte per replaceChild HTML-Inhalte on-fly, also ohne Seitenreload verändern, im Grunde funktioniert das ja auch, hierfür gibt es schöne Beispiele im Web. Ich möchte (ist für ein Redaktionssytem) dass wenn ich z. b. das Wort „fett“ markiere und dann einen Button drücke, dieses Wort „fett“ SOFORT, ohne Seitenreload und ohne Hilfe von serverseitigem Skript…das Wort über das DOM (ie5+ oder Mozilla reicht) bold dargestellt wird, ich hab es schon geschafft, dass ausgewählte Wort in einem String zu erkennen und auch per createText und createElement und replaceChild den Browser dazuzubewegen, dass gewünschte Wort bold darzustellen, aber wenn ich in den Sourcecode des Browsers kukke hat sich nichts verändert? Ist die gesamte Manipulationsmöglichkeit des Browser mittels Dom2 somit doch nur auf die Rendering-Engine des Browsers beschränkt? Ich kann also auf keinen Fall den im Cache liegenden Sourcecode manipulieren? Bzw ist es vielleicht möglich per JavaScript ein Hiddenfeld mit den geänderten Stringdaten zu füllen sodass ich ein echtes in eckigen klammern (**) sprich htmlmässig gesetztes wort per form-post in eine datenbank schreiben kann? Das ist ja dann alles nicht sehr hilfreich oder? :frowning: Danke für jeglichen Rat. Ach ja hier ne Demo: http://www.alistapart.com/stories/domtricks3/7.html

timo**

Hi Timo @method5 !

ich möchte per replaceChild HTML-Inhalte on-fly, also ohne
Seitenreload verändern, im Grunde funktioniert das ja auch,

Ist doch schön. Seite …

http://www.alistapart.com/stories/domtricks3/7.html

…funzt ja auch. *g*


ausgewählte Wort in einem String zu erkennen und auch per
createText und createElement und replaceChild den Browser
dazuzubewegen, dass gewünschte Wort bold darzustellen,
aber wenn ich in den Sourcecode des Browsers kukke hat sich
nichts verändert? …

Ok. Ganz kurz: Der Source-Code wurde vom Server gelesen, ggf. interpretiert, bearbeitet (SSI/CGI) und (das Ergebnis) an den Broswer ausgeliefert. Der schlaue Browser hat das Ausgelieferte dann auch gleich in einen Ordner unterhalb „%windir%\Temporary Internet Files“ gespeichert, in Deinem Falle als Datei 7[1].html (oder 7[2].html usw.).

Was aber nicht geschieht, und das hast Du ja nachgelesen, ist, dass die Seite auf der Platte des Clients neu gespeichert wird. Das passiert nur dann, wenn die Seite vom Browser neu angefordert, vom Server übertragen und vom Browser - als neue(re) Version - empfangen wird.

Die Modifikation, die Du mit dem Script beauftragst oder veranlasst, erfolgen client-seitig – oh Gott, was für ein Deutsch – also werden „dort“ beim Betrachter ausgeführt. Die Seite an sich wird aber nicht geändert; sie bleibt im Browser-Cache so liegen wie übertragen.

Wenn Du Dich – vielleicht am Rande – einmal mit SSI befasst, wirst Du schnell feststellen, dass das, was der User vor die Nase bekommt, meist so nicht (physisch) auf dem Server liegt.

Google befragen nach „SSI Variable“: http://www.google.de/search?num=100&hl=de&ie=ISO-885…

Das lässt übrigens hervorragende Rückschlüsse über die verwendeten Techniken zu… Und weil ich glaube, dass Du der geeignete Kandidat dafür bist, hier noch ein Link-Tipp zum Augen-Rollen:

Odem.org hat den Test gemacht und Internet-Contents manipuliert. Das Ergebnis der Studie findest Du unterhalb der URI http://www.odem.org/insert_coin/ – Viel Spass und Staunen…

Also, bis denne…

CU DannyFox64

cool. habs jetzt aber doch geschafft. mit execCommand kann man in einem iframe (Cms kann ja ruhig nur im ie laufen wenn die redakteure dann super features bekommen, muss ja nichtg cross-browser sein!) dann kann man ein wort oder buchstaben markieren und mit entsprechenden tags wird das markierte, ähnlich wie in winword…sofort z. b. BOLD angezeigt…und per:

iframeName.document.body.innerHTML;

bekommt man dann automatisch den aktuell GEÄNDERTEN html-code, egal was im sourcecode steht, diesen fängt man dann mit javascript VOR Dem Form-POST AB…und weist ihn einem hidden-feld zu…

var f=document.frmTest;
f.test.value = iView.document.body.innerHTML;
f.action = „test.php“;
f.target = ‚_self‘;
f.submit();

UND DANN! sollte es per php in die datenbank gehen, soweit war ich jetzt zwar noch nicht aber es müsste funzn, mann muss halt nur noch addslashen oder die daten möglichst gut filtern (hochkommatas o. ä.) und fertig ist die lösung eines kleinen html-echtzeit-wysiwig-browser-basierte ohne programmierkenntnisse :smile: ohne java-applet, ohne active x, ohne zusatzsoftware, ohne einfürhungskurs

)))))))))))))

Hi!

cool. habs jetzt aber doch geschafft. mit execCommand kann man
in einem iframe (Cms kann ja ruhig nur im ie laufen wenn die…

Super! Hab mich richtig mitgefreut für Dich.

Nach der Lösung verstehe ich jetzt auch, warum Du so versessen dahinter her warst…

Ist ja wirklich interessant, was Du auf Deiner Site machst… (da muss ich mir ja x ein Scheibchen CSS-Knowledge von abschneiden *g*)

CU DannyFox64

äh wie was. meinst du es jetzt ernst? danke, aber ganz ehrlich es gibt so crazy cracks das ich mir immer ganz panne vorkomme. aber man kann ja nicht alles machen! :smile:

äh wie was. meinst du es jetzt ernst?

Ja, schon!

danke, aber ganz ehrlich
es gibt so crazy cracks das ich mir immer ganz panne vorkomme.

Stimmt wohl.
Aber „die“ haben die Comp.-Elektronen schon mit der Muttermilch bekommen.

aber man kann ja nicht alles machen! :smile:

CU DannyFox64

hehe :smile: