Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

mittels javascript auf andere seite schreiben





Frage

Hi! Ich möchte einen Chat mittels php mysql und javascript machen. Dafür wollte ich in einem unsichtbaren iframe eine php Seite laufen lassen, die sich alle 5 Sek neu aufruft und prüft, ob neue Einträge vorhanden sind. Das ist noch kein Problem. Jetzt soll diese Seite auf der Hauptseite eine Textarea erweitern, wenn neue Einträge da sind. Kann man das machen? Wie geht das?

Antwort 1 von Dr.Ma-Busen

Moin!

Ja, sowas kann man machen.
Aber warum willst du das so umständlich über ein iframe lösen?

Lade doch einfach immer die Seite mit den Nachrichten neu. Und zwar mittels
<meta http-equiv="refresh" content="5; URL=http:/...

MfG

Antwort 2 von Xavier

Genau das habe ich bereits gemacht, aber in dem Chat werden auch Smileys verwendet, deren Animation länger als 10 Sekunden dauert.
Daher kann die Ausgabe nicht alle paar Sekunden neu geladen werden.
Ich habe das jetzt so gemacht, dass parallel zur chatseite ein script in einem Frame (Größe 0) gestartet wird, das die aktuellen Einträge aus der DB holt.
Das funktioniert auch wunderbar.
Jetzt möchte ich auf der Chatseite den Text ergänzen.
Wie man den Wert z.B. von <input type=text> ändert ist mir klar (einfach value ändern), aber eigentlich möchte ich eine textarea nehmen und dort den Text mittels JS einfügen (Also nicht mehr in ein IFrame!!!)

Wie kann ich das machen?

Beispiel für´s Ändern vom Textfeld:
window.main.chat.chat_eingabe.value = ´HAAALLLOOO!´;

Erklärung:
main = main-Frame
chat = Formular im main-Frame
chat_eingabe = Textfeld im Formular chat

Wie gesagt, das ist kein Problem.
Aber wie mache ich das mit einer Textarea?!?!?

Antwort 3 von Dr.Ma-Busen

Also mit einer Textarea wird es nicht gehn, weil dort wird dir nur der Text angezeigt, und ich wüsste nicht das in einer Textarea auch Grafiken (Smilies) angezeigt werden.

Du musst das dann auch über ein Frame oder IFrame machen.
Dann müsstest du an das Iframe, was die Daten holt, nur immer die letzt zeilen übergeben die seit dem letzten abruf hinzugekommen sind.
Und um das jetzt in das Frame zu schreiben, könnte man das mit JavaScript/DOM machen. Um genau zu sein mit createElement und appendChild
Und mit scrollBy scrollst du dann immer an das Ende der Datei damit die User nicht immer scrollen müssen.

Aber damit werden ältere Browser wahrscheinlich Probleme habe.
In dem fall ist es besser mit document.write den Chattext in das Frame zu schreiben und das HTML dokument nie schlissen, als nie "</body>" oder "</html>" in das Frame schreiben.

Antwort 4 von Xavier

Ok, danke erstmal!
Jetzt mache ich das wieder mit einem Iframe.
In dem Iframe wird die Datei chat_out.php geöffnet. Diese hat eine JavaScript Funktion schreibe(text) zum schreiben von neuen Einträgen (funzt!).
Wie kann ich jetzt von ausserhalb darauf zugreifen?
WIe man die Eigenschaften des Iframes ändert ist mir klar, zB.
document.getElementById("chat_fenster").style.border = "2px solid black"; macht einen schwarzen Rand um das IFrame.
Aber document.getElementById("chat_fenster").schreibe(´TEST´); funzt nicht!

Was mache ich falsch?

Antwort 5 von Dr.Ma-Busen

So kannst du auf JavaScript in einem andern Frame drauf zugreifen:
http://de.selfhtml.org/javascript/objekte/frames.htm#scripts

Antwort 6 von Xavier

Habs mit parent.chat_fenster(so heisst das IFrame).schreibe("Test"); probiert, aber irgendwie habe ich den Verdacht, dass es bei IFrames anders läuft, als bei "normalen" Frames.

Könnte mal jemand den Code von einem solchen Fall posten?

Nochmal das Problem:
Ich möchte von Frame "sub" auf die JS-Funktion schreibe(text) {...} eines IFrames "chat_fenster" in dem Frame "main" aufrufen.
Alternativ könnte man auch eine "Zwischenfunktion" Im Frame "main" machen, auf die dann zugegriffen wird...

Antwort 7 von Dr.Ma-Busen

Stimmt du hat ja ein IFrame, versuch es da dann mal mit top.frames["FrameName"]... bzw. mit top.FrameName...

Steht aber auch ein paar Zeilen weiter oben oder weiter unten bei dem Link ;)

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: