# Smilie in Textarea einfügen



## Nucleus (29. September 2003)

hi, 
ich generiere ein pop up fenster mit java und habe in das feld ein smilie hinzugefügt.
Nun will es so machen das wenn ich auf das smilie klicke es in die textarea eingefügt wird -> aber es  nicht und ich weiß nicht warum kan mir da jemand weiterhelfen Danke schon einmal.


```
<SCRIPT LANGUAGE="JScript">
<!--
function fsmilies(Zeichen) {
   document.klonforum.newContent.value =
   document.klonforum.newContent.value + Zeichen;
}
var oPopup = window.createPopup();
function openPopup()
{

var oPopBody = oPopup.document.body;
oPopBody.innerHTML = "<div style='position:absolute; top:0; left:0; " +
"width:271px; height:284px; " + "background : background;> " +
"<hr size='0'>" + "<a href='fsmilies(' :  ) ')'><img src='smilie.gif' border='0'></a></div>"
oPopup.show(-220, 160, 271, 284, document.body);
}
</SCRIPT>


<a href="#adsmilies" ONCLICK="openPopup();">Öffne PopUp</a>
```


----------



## Sven Mintel (29. September 2003)

EinTextarea darf und kann lediglich puren Text enthalten...sonst nix....also auch keine Grafiken.

Oder hast du etwas anderes gmeint?


----------



## Nucleus (29. September 2003)

ja nur text also ich klicke auf das popup drauf und darin befinden sich die smilies wenn ich jetzt draufklicke soll zb  in die Textarea eingetragen werden - nur bei meinem code weiß ich nicht so ganz wie ich das übergeben soll.


Weißt du wie das geht ?

mfg nucle


----------



## Sven Mintel (29. September 2003)

Ahso....
das sollte mit 

```
function fsmilies(Zeichen) {
   opener.document.klonforum.newContent.value =
   opener.document.klonforum.newContent.value + Zeichen;
}
```
Da sich das Textarea nicht im Popup befindet,kannst du es nicht direkt ansprechen...du musst erstmal das Zielfenster ansprechen....in dem Fall mit "opener"...das ist das Fenster,von welchem aus das Popup geöffnet wurde.

BTW.: dein Skriptcode ist recht IE-spezifisch,der dürfte in anderen Browsern nicht funktionieren.


----------



## Nucleus (30. September 2003)

hmm kennst du vielleicht eine andere methode von popups die auch in anderen browsern gehen ? 

Wäre super weil ich habe gerade mein eigenes Forum programmiert ist net hyper genail aber für ne normale Homepage reicht es und includen kann man es auch!

Und das normale popup fenster gefällt mir nicht wirklich deswegen versuche ich das irgendwie anders zu gestalten.
Aber anscheinend zu IE mäßig.
hmmmmmmm

http://knusperleicht.at/php/index.php?knuspi=forum&kfsektor=boards


mfg nucle


----------



## Andreas Gaisbauer (30. September 2003)

Hallo,

hier eine andere Art deine Funktion zu verwirklichen. Funktioniert in allen "großen" Browsern und sollte auch in anderen klappen... Bei fragen zum Code einfach fragen 


```
<html>
<head>
  <script type="text/javascript">
  function smile(){
      var html = '<html><head></head><body>';
          html += '<a href="#" onClick="opener.insert(\':-)\'); return false;">:-)</a><br>\n';
          html += '<a href="#" onClick="opener.insert(\':-|\'); return false;">:-|</a><br>\n';
          html += '<a href="#" onClick="opener.insert(\':-(\'); return false;">:-(</a><br>\n';
          html += '</body></html>';
      
       var popup = open("", "smile", "width=300 ,height=400");
       with(popup.document){
           open();
               write(html);
           close();  
       }      
  }
  
  function insert(smily){
        document.demo.test.value += smily;
  }
  </script>
</head>
<body>
<form name="demo">
  <textarea name="test"></textarea>
  <a href="#" onclick="smile(); return false">:-) einfügen</a>
</form>
</body>
</html>
```

ciao


----------



## Nucleus (30. September 2003)

Danke für deine Antwort :

Was wird da genau gemacht ? Versteh ich nicht ganz ?

```
with(popup.document){
           open();
               write(html);
           close();
```


Ausserdem kommt bei mir eine Fehlermeldung Objekt nicht gefundne.
Danke für die Antwort
mfg nucle


----------



## Andreas Gaisbauer (30. September 2003)

Hallo,

also wir öffenen ein neues Popup Fenster und behalten die Referenz in "popup" - damit wir auf das neue Fenster auch zugreifen können. Wir geben bei Window.open kein Dokument an, welches geöffnet werden soll, deswegen Öffnen wir das Dokument  -> open(), dann schreiben wir den Quelltext des Dokuments mit write(html) in das Dokument und schließen es zum schluss mit close(). "with(popup.document)" ist ein shortcut, sonst müssten wir schreiben

```
popup.document.open();
popup.document.write(html);
popup.document.close();
```
Das was wir in das Dokument schreiben, haben wir weiter oben bereits bestimmt und in der Variablen "html" gespeichert.... Der Fehler "Objekt nicht gefunden" weist für mich darauf hin, dass dein Formular anders benannt ist, bzw du einen "zugriffspfad" (document.xxx.xxx.value) nicht korrekt angepasst hast. - überprüfe das nochmal - sollte der Fehler nicht gefunden werden, einfach mal den ganzen Code posten...

bye


----------



## Nucleus (30. September 2003)

ah danke für die erklärung habe so ziemlich alles verstanden - ich probier es jetzt einmal aus 

 für deine schelle antwort und Hilfe 


mfg nucle


----------



## Nucleus (30. September 2003)

```
<html>
<head>
  <script type="text/javascript">
  function smile(){
      var html = '<html><head></head><body>';
          html += '<a href="#" onClick="opener.insert(':-)'); return false;">:-)</a><br>';
          html += '</body></html>';
      
       var popup = open("", "smile", "width=300 ,height=400");
       with(popup.document){
           open();
               write(html);
           close();  
       }      
  }
  
  function insert(smily){
        document.demo.test.value += smily;
  }
  </script>
</head>
<body>
<form name="demo">
  <textarea name="test"></textarea>
  <a href="#" onclick="smile(); return false">:-) einfügen</a>
</form>
</body>
</html>
```

hmm is aber genau wie deines und der Fehler kommt !


opener -> ruft die funktion insert in dem popup auf stimmt das ?





Ich weiß shonmal an was es liegt - die smilies will er nicht aber keine ahnung warum.


----------



## Andreas Gaisbauer (30. September 2003)

Die Funktion "insert" steht im Head des "Eltern"Dokuments. In dem Dokument wird das Popup azfgerufen - dadurch wird es für das Pupup Dokument der "Opener". Um auf die "Insert()" Funktion vom Popup aus zuzugreifen muss man es über opener.insert() aufrufen...

Der Fehler von dir liegt hier:

```
html += '<a href="#" onClick="opener.insert('<img src="images/smilies/biggrin.gif" border="0" alt="">'); return false;"><img src="images/smilies/biggrin.gif" border="0" alt=""></a><br>';
```
Der Funktion "insert" übergibst du ja den Source um das Bild einzufügen - aber Bilder können nicht in die Textarea - der Aufruf sollte eher so aussehen (also mit dem "SmilyCode"):

```
html += '<a href="#" onClick="opener.insert(\\':-D\\'); return false;"><img src="images/smilies/biggrin.gif" border="0" alt=""></a><br>';
```
Die Singelquotes die du in den Strings verwendest müssen mit \ maskiert werden, da sonst der String lediglich "<a href="#" onClick="opener.insert(" wäre... Die \ werden aber meistens hier vom Forum rausgekilled 

Hoffe man konnte mir folgen 

ciao


----------



## Nucleus (30. September 2003)

heheh na witzig dadurch das ich den php code verwendet habe hat er mir automatisch  dieses gesicht ersetzt -> und dadurch ist der pfad des bildes erschienen.
Weil ich habe es bei mir nicht 


und der Fehler den ich dauernd hatte kan vom smilie 


('') haben die \\ gefehlt


----------



## Andreas Gaisbauer (30. September 2003)

Ähmmm... vielleicht ist's schon zu spät, aber ich kann dir jetzt gradnicht folgen  - funktionierts jetzt, oder kommen noch Fehler?


----------



## Nucleus (30. September 2003)

OK jetzt passt alles danke für deine Hilfe jetzt kenn ich mich schon mehr in javascript aus  

naja obwohl ich java nicht so sehr mag - wahrscheinlich wegen UNI *gg*


----------



## Nucleus (30. September 2003)

Also nocheinmal 

ich habe den PHP Code für die Darstellung des Scriptes genommen - [ P H P]
[  / P H P ] ---- so jetzt habe ich deinen code eingefügt und php hat automatisch 
den Pfad vom smilie und zwar dem  angegeben. Deswegen war auf einmal der Pfad vom Smilie da *gg*

Un der Fehler beim ganzen war bei den Smilies ('\gesicht\')  - \\ fehlten deswegen konnte er kein objekt finden 


Danke für deine Hilfe


----------



## Andreas Gaisbauer (30. September 2003)

Ok, jetzt hab ich´s geschnallt  

bye Andreas, der Java auch nicht besonders mag und froh ist das Java und JS nichts gemeinsam haben


----------

