Problem mit befüllen einer Textbox aus einem Popup

Promaetheus

Mitglied
Ich habe mir ein kleines Stückchen Code zusammengebastelt mit dem ich aus einem Popup-Fenster etwas in die Hauptseite einfügen lassen möchte. Im Endeffekt soll das ganze dann so werden wie hier mit den Smileys, nur mit anderen Bildern. Die Eingabe von der Hauptseite aus funktioniert prima, nur vom Popup passiert etwas unvorhergesehenes, wie ich unter dem Code beschrieben habe.

Hauptseite:
Code:
<head>

<title>Test</title>

<script language="JavaScript">

function addText(existingText) {
  var f = formular;
  f.text.value += existingText;
  f.text.focus();
}

</script>

</head>

<body>

<form name="formular" method="post" action="index.php">
<textarea name="text"></textarea><p>
</form>

<a href="javascript:window.open('popup.php', 'Name','toolbar=no,status=no,scrollbars=yes,menubar=no,width=700,height=600')">Klick</a><p>

<a href="javascript:addText('X')">X</a><br>
<a href="javascript:addText('Y')">Y</a><br>
<a href="javascript:addText('Z')">Z</a><br>

</form>
</body>
</html>

Popup:
Code:
<head>

<title>Testpopup</title>

<script language="JavaScript">

function addText(textToAdd){
  opener.document.formular.text.value += textToAdd;
  opener.document.formular.text.focus();
}

</script>

</head>

<body>
<a href="javascript:addText('A')">A</a><br>
<a href="javascript:addText('B')">B</a><br>
<a href="javascript:addText('C')">C</a><br>
</body>
</html>

Leider erscheint dann im Mozilla plötzlich anstatt des Inhalts des Hauptfensters "[object Window]" und im IE6+7: "[object]".

Wo könnte denn hier der Fehler liegen?
 
Hi,

das liegt daran, dass der Link auch im Hauptfenster geöffnet wird. So muss es gehen:

HTML:
<a href="#" onclick="window.open('popup.php', 'Name','toolbar=no,status=no,scrollbars=yes,menubar=no,width=700,height=600'); return false;">Klick</a><p>

LG
 
Danke vielmals für den Hinweis. Das hatte ich nicht gewusst. So erledigt sich auch gleich das Problem das ich hätte falls jemand Javascript nicht aktiviert hat.

Danke vielmals!
 
Ich habe das ganze verfeinert und es funktioniert nun super. Das Problem ist, dass ich das ganze für meine Webseite gedacht hätte, auf welcher ich die Textareas von einem WYSIWYG Editor formatieren lasse (tinyMCE). Nun funktioniert mein "Skript" ohne den Editor wunderbar und alles wird in der Textarea übernommen. Leider jedoch nicht wenn ich den Editor für die Textbox aktiv habe. Kann ich da etwas machen, bzw. wie kann so etwas sein, denn das Formlar ist fix, der Elementname usw.?!

Hier mein fertiges Skript:

Einbindung in der Hauptseite:
Code:
<a href="#" onclick="window.open('popup.php?form=formular&element=text', 'Name','toolbar=no,status=no,scrollbars=yes,menubar=no,width=700,height=600'); return false;">Klick</a><p>

Popup:
Code:
<head>

<title>Testpopup</title>

<script language="JavaScript">

function addText(formName,fieldName,textToAdd){
  opener.document.forms[formName].elements[fieldName].value += textToAdd;
  opener.document.forms[formName].elements[fieldName].focus();
}

</script>

</head>

<body>
<a href="javascript:addText('<?php echo $_GET['form']; ?>','<?php echo $_GET['element']; ?>','<img src=&quot;http://www.gamespot.at/catalog/admin/images/gamespot.gif&quot; border=&quot;0&quot;>')">Bild einf&uuml;gen</a><br>
</body>
</html>
 
Ich habe jetzt noch weiter probiert, jedoch ohne Erfolg. Alles funktioniert bestens wenn die Textarea nicht mit tinyMCE formatiert wird. Sobald aber tinyMCE "arbeitet", werden die "externen" Informationen nicht mehr in der Textarea übernommen. Wie kann sowas denn bitteschön sein? Textarea bleibt ja Textarea oder? Die Javascript Funktion zum einbinden wird sogar VOR dem tinyMCE Skript eingebunden?! :confused:
 
Hi,

im Nachhinein, kannst Du nicht über den Textareanamen etwas einfügen, sobald tinyMCE geladen ist, ist die nämlich unsichtbar ;)
Da wirst Du wohl mal in der API nachschauen müssen, wie Du da etwas hinzufügen kannst.
Vielleicht könnte das ein Kandidat sein?
Selbst benutze ich das nicht...

LG
 
Danke. "tinyMCE.activeEditor.selection.setContent()" war mein Freund. ;)
Ich hatte mich schon durch einen Grossteil der API gequält, hatte aber leider immer nur "tinyMCE.activeEditor.setContent()" verwendet und somit war der restliche Textfeldinhalt weg.

Jetzt habe ich zumindest mal einen Ansatz. ;)
 
Ich habe es nun endlich hinbekommen und der Text wird eingefügt. Wenn ich nun aber einen HTML-Code in die Textarea einfügen lassen möchte, so ergibt sich ein Problem:

Bitte nicht schlagen weil das Ganze so kompliziert ist, jedoch hat sich das alles nicht anders lösen lassen. Der Link fügt einen HTML Code in die Textarea ein, welche dann in der Datenbank gespeichert wird. Später soll der ganze HTML Code in der Textarea ausgegeben werden, jedoch enthält der an die Textarea zu übergebende HTML Code auch einen Javascript aufruf und hier ergibt sich das Problem:

Code:
<a href="#" onclick="javascript:tinyMCE.activeEditor.selection.setContent('<a href=&quot;http://www.xyz.com/thumb_image.jpg&quot; target=&quot;_blank&quot; onclick=&quot;popupImage(\'http://www.xyz.com/image.jpg\', \'800\', \'600\'); return false&quot;><img src=&quot;http://www.xyz.com/thumb_image.jpg&quot; border=&quot;0&quot;></a>')">

Im Quelltext sieht das Ganze so aus:
<a href="#" onclick="javascript:tinyMCE.activeEditor.selection.setContent('<a href=&quot;http://www.xyz.com/mage.jpg&quot; target=&quot;_blank&quot; onclick=&quot;popupImage('http://www.xyz.com/mage.jpg', '800', '600'); return false&quot;><img src=&quot;http://www.xyz.com/thumb_image.jpg&quot; border=&quot;0&quot;></a>')"><img src="http://www.xyz.com/thumb_image.jpg" alt="EINFÜGEN" title="Klicken Sie hier um das Bild in den Text einzufügen" width="80" border="0"></a>

Jedoch funktioniert das Übernehmen in die Textarea nicht mehr.

Wenn ich das Ganze aber OHNE die Single-Quotes im popupImage() probiere, dann wird alles ganz korrekt in die Textarea übernommen und alles funktioniert BIS auf das popupImage im ausgegebenen Quellcode.

Es tut mir leid wenn ich das hier so kompliziert ausdrücke, jedoch ist die Sache an sich kompliziert und ich habe versucht es so verständlich wie möglich auszudrücken.:(
 

Neue Beiträge

Zurück