Zur Navigation

BBCode aus iFrame einfügen

1 tommik

Hallo,
ich habe in einem Thread hier gelesen, wie man es macht, dass der BBCode dort eingefügt wird, wo man sich auch gerade mit dem Cursor befindet.

Doch statt
<input type="button" class="button klein" value="fett" onclick="cur_ins(this.form.text, '[ b]', '[/ b]', 0);" name="fett" /> 

solch einem Code, habe ich folgenden:
<td><input type="button" class="button" onClick="AddCodeFromWindow(\' [img]'.$webpath.$screen.'[/img] \')" value="Hinzufügen als Bild">

Dann habe ich noch ein Problem.
Und zwar habe ich eine Textarea ...
Ich habe folgenden Befehl:
<input type="button" class="button" onClick="AddCodeFromWindow(\' [img]'.$webpath.$screen.'[/img] \')" value="Hinzufügen als Bild">
Doch dieser steckt in einem iFrame!
Die Textarea ist nicht in diesem iFrame.

Der Jvs-Code:
function AddCodeFromWindow(thecode) {
	opener.document.post.message.value += thecode + " ";
	opener.post.message.focus();
}

Wie kann ich das Problem lösen?

Gruß,
tommik.

13.04.2006 23:58

2 C)-(iLL@

Hallo Tommik,

Wie kann ich das Problem lösen?
Ich hoffe ich verstehe Dich richtig...

Doch dieser steckt in einem iFrame!
Die Textarea ist nicht in diesem iFrame.

So sollte es gehen:

Hauptfenster:
<html>
<head>
	<title>Hauptfenster</title>
</head>
<script type="text/javascript">
function AddCodeFromWindow(thecode) {
  destfield = document.getElementById('message');
  destfield.value += thecode;
  destfield.focus();
}
</script>
<body>
<form method="post">
<fieldset>
  <textarea id="message" cols="60" rows="3"></textarea>
</fieldset>
</form>
<iframe src="testiframe.html"></iframe>
</body>
</html>
iFrame-Dokument:
<html>
<head>
	<title>iFrame</title>
</head>

<body>
<form action="">
 <fieldset>
 <input type="button" onClick="parent.AddCodeFromWindow('[img]http://domain.com/image.jpg[/img]')" value="Hinzuf&uuml;gen als Bild">
</fieldset>
</form>
</body>
</html>

Natürlich kannst Du PHP zum Schreiben der Werte nehmen - die Funktion selbst würde ich im Hauptfenster ablegen (auch cur_ins kannst Du so aus dem iFrame aufrufen). Ist damit Dein Problem gelöst?

Edit:

Um es Dir mit cur_ins einfacher zu machen, solltest Du die Funktion entsprechend abändern, sodass das Feld nicht per Parameter übergeben wird:

function cur_ins(startTag, endTag, offset) {
 field = document.getElementById('message');
 field.focus();
 if (document.getSelection) ... 
[der Rest wie gehabt]

14.04.2006 00:39 | geändert: 14.04.2006 00:53

3 tommik

Hallo,
irgendwie will es nicht funktionieren.
Es passt einfach nichts wenn ich auf den Button klicke.

//Edit: Naja, und wie binde ich bei meinem Code dann die Cursor Methode ein?

Gruß,
tommik.

14.04.2006 01:05 | geändert: 14.04.2006 01:08

4 C)-(iLL@

irgendwie will es nicht funktionieren.
Es passt einfach nichts wenn ich auf den Button klicke.
Das Beispiel, welches ich oberhalb reingestellt habe, ist getestet - sogar im IE. Nach diesem Muster sollte es bestimmt funktionieren.

Kann man sich das mal ansehen? Kannst Du den Code posten (aus den kurzen Teilen werde ich nicht schlau, da ich das HTML nicht sehe) oder gibt es gar eine kleine Testseite online zum reingucken?

//Edit: Naja, und wie binde ich bei meinem Code dann die Cursor Methode ein?
Du setzt die Funktion cur_ins in das Hauptfenster (vor oder nach AddCodeFromWindow) und rufst sie dann vom iFrame aus z.B. auf einem Button/Bild so auf:

onClick="parent.cur_ins('[img]', '[/img]', 0)"
Die cur_ins-Funktion ist so gestaltet, dass sie die Markierung mit den bbtags umschließt bzw. am Cursor die BBTags einfügt. Das funktioniert auch, wenn das Textfeld 'message' im Hauptfenster liegt und die Funktion dann vom iFrame aufgerufen wird.

Du kannst die Funktion cur_ins auch so benutzen:

onClick="parent.cur_ins('[img]http://meinedomain.com/image.jpg[/img]', '', 0)"

14.04.2006 01:20 | geändert: 14.04.2006 01:29

5 tommik

Das ist der Code

<input type="button" onClick="parent.AddCodeFromWindow(\' [img]'.$webpath.$screen.'[/img] \')" value="Hinzuf&uuml;gen als Bild">

(Hab jetzt erstmal das cur_ins weggelassen).

Zum Javascript-Code

Brauchst du noch mehr?

14.04.2006 01:37

6 C)-(iLL@

Brauchst du noch mehr?
Ja, wie ich schrieb, würde ich gerne das HTML sehen... :) Der Aufruf vom Button mag richtig sein (ich nehme mal an, die Escape-Slashes sind da, weil Du das mit PHP-echo rausschreibst), aber wenn es nicht funktioniert, liegt der Fehler wahrscheinlich woanders. Das generierte HTML ist wichtig, PHP sieht der Browser ja nicht.

1) Dein Javascript muss vom Hauptfenster eingebunden werden
2) Die Textarea im Hauptfenster muss die id 'message' haben
3) Das Formular mit dem Button muss im IFrame liegen
4) (Glaskugel kaputt)

Hast Du den Firefox mit der Webdeveloper-Toolbar? Die zeigt alle auftretenden Javascript-Fehler im 2. Icon von rechts so wunderbar an, mit einer (im Gegensatz zum IE) verständlichen Ausdrucksweise, korrekter Zeilen- und URL-Angabe.

14.04.2006 01:55

7 tommik

Ich habe in meinen Augen alles eingehalten o.O

Klick mich

Ja, habe ich auch installiert.

Gruß,
tommik.

14.04.2006 02:03

8 C)-(iLL@

Ach mensch, wie soll ich das bloß so testen? *g Das ist ja eine Text-Datei... mit einem PHP-(oder CGI?) Quelltext-Fragment... Das kann ich ja nicht mal laufen lassen, Du machst es mir nicht leicht :) btw ist 'post' kein guter Name für ein Formular, aber daran sollte es nicht liegen.

Gibt es nicht ein einfaches, komplettes HTML, das man im Browser aufrufen kann, sodass ich das IFrame und das Textfeld sehe und mal auf den Button klicken kann, damit der Fehler ersichtlich wird? ^^ Der ganze Rest ist relativ unwichtig für dieses Problem (du wirst doch keine IDs doppelt vergeben haben bzw. Du hast das HTML sicher durch den Validator laufen lassen, oder?)

Ja, habe ich auch installiert.
Na dann los... was sagt die Javascript-Konsole, wenn Du den Button drückst? Der Zugriff auf welches Element gibt den Fehler?

14.04.2006 02:26

9 tommik

Schade, dass ich dir keine PN schreiben kann.
Hier aber mal der Link
www.gfx-rooms.de/v1/
Du kannst dich mit // Ich glaub jetzt hab ich alles geschrottet, trotzdem danke.... //
einloggen.

Dann auf z.B Photoshop und Tutorial hinzufügen ;)

// Du musst ein Bild hochladen und dieses dann per IMG / Link Tag daneben (nicht OBEN beim Editor) einfügen.

14.04.2006 02:32 | geändert: 14.04.2006 02:44

10 C)-(iLL@

Ich glaub jetzt hab ich alles geschrottet
jo, ging irgendwie nicht, das Hochladen ... query failed und so :) Im FF klappts gar nicht, auweia.

trotzdem danke
Dafür nicht... :/ lass was hören, wenn's wieder testbar ist. Mail habe ich auch, siehe Profil.

14.04.2006 02:46 | geändert: 14.04.2006 02:48