Tim Braun: Befehle werden in falschem Objekt ausgeführt!

Hallo! Ich habe folgende JavaScript-Funktion, die in meinem CMS ein Bild in den HTML-Bereich eines DIVs einfügen soll. Ich hatte zuerst die execCommand-Funktion alleine Probiert, aber die geht nur, wenn eine etwas markiert ist und das will der Kunde nicht...

Hier meine Funktion:

function insertPic (pic) {
 div = document.getElementById('cnt');

range = div.document.selection.createRange();
 range.execCommand('Delete');
 idstr = "" id="556e697175657e537472696e67";
 alert(range.execCommand('InsertImage',false,idstr));

div.focus();
}

Ich habe den Code teilweise bei HTMLAREA geborgt, da ich erstmal das Prinzip verstehen möchte. Ich erkläre mal ganz kurz, was passieren soll:

Ich habe ein DIV, in dem der User editieren kann, wie es ihm gefällt. Jetzt will ich, dass er ein Bild einfügen kann und zwar an der Stelle, an der der Cursor gerade ist. Versucht habe ich es mit dem Code oben. Als erstes, bei div = document... hole ich mir eine Referenz auf mein DIV (editierbar). Danach erstelle ich ein TextRange/ControlRange Objekt und lösche den Inhalt, da ja, falls etwas markiert ist, das ganze überschrieben werden soll. Danach wird die execCommand ausgeführt und sollte eigentlich ein Bild in der Selektion einfügen, auch wenn es keine gibt - dann eben an Cursorposition. Wenn das jetzt ausgeführt wird, passiert folgendes: Im HTML-Body wird an oberster Stelle ein Bild eingefügt, welches aber nicht als Child vom DIV "markiert" ist, das heißt, ich kann es weder markieren noch sonst irgendwas machen und es fällt eben aus dem Design. Hat jemand von euch eine Idee?

Gruß,
Tim

  1. Hi,

    idstr = "" id="556e697175657e537472696e67";

    Soll das ein HTML-id-Attribut werden?
    Falls ja: ein solches muß mit einem Buchstaben (a-z) beginnen.

    cu,
    Andreas

    --
    MudGuard? Siehe http://www.Mud-Guard.de/
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. Hi,

      idstr = "" id="556e697175657e537472696e67";

      Soll das ein HTML-id-Attribut werden?
      Falls ja: ein solches muß mit einem Buchstaben (a-z) beginnen.

      cu,
      Andreas

      Hi!

      Danke erstmal, ich werds mal ausprobieren...

      -> Jetzt meckert das Forum wegen 25% zitierter Zeilen...blabla...Naja, ich habs in der Zwischenzeit ausprobiert (mit dem ID-Tipp)...und: ES GEHT! Man danke!

      Tim

  2. Hi,

    range = div.document.selection.createRange();
    range.execCommand('Delete');
    alert(range.execCommand('InsertImage',false,idstr));

    Nachtrag: kann es daran liegen, daß Du erst das range löschst?

    cu,
    Andreas

    --
    MudGuard? Siehe http://www.Mud-Guard.de/
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. Hallo,

      kannst du mir bei meinem Problem helfen? Verstehe nix so richtig...

      Viele Grüße
      Marion

      <html>
      <head>
      <title>Pizzaformular</title>
      <script language="JavaScript">

      <!-- Wie muss denn jetzt das script dazu heißen, wenn der Preis nach einem Klick auf "Jetzt berechnen" erscheinen muss ??? -->

      function fensteropen()
      {
      var fenster=window.open("sonderaktion.htm","zweites","width=430,height=120,status=yes","toolbar=yes");
      }

      </script>
      </head>
      <body bgcolor="#CC0000" link="#FFFFFF" vlink="#FFFFFF" alink="#FFFFFF">
      <div align="center"><font size="6">Pizzaformular</font></div>
      <div align="center">
        <p><font size="5">Bitte wählen Sie aus, welche Pizzen wir Ihnen liefern
          sollen:</font></p>
        <table width="492" cellspacing="5" cellpadding="5" border="1" height="230" bgcolor="#FFAF09">
          <form>
            <tr>
              <td width="66">
                <input type="checkbox" value="checkbox">
              </td>
              <td width="144"><font size="4">Pizza Napoli</font></td>
              <td width="126"><font size="4">€ 5,55</font></td>
              <td rowspan="8" width="77"><img src="aktion.jpg" width="146" height="200"></td>
            </tr>
            <tr>
              <td width="66">
                <input type="checkbox" value="checkbox">
              </td>
              <td width="144"><font size="4">Pizza Funghi</font></td>
              <td width="126"><font size="4">€ 5,95</font></td>
            </tr>
            <tr>
              <td width="66">
                <input type="checkbox" value="checkbox">
              </td>
              <td width="144"><font size="4">Pizza-Salami</font></td>
              <td width="126"><font size="4">€ 6,15</font></td>
            </tr>
            <tr>
              <td width="66">
                <input type="checkbox"value="checkbox">
              </td>
              <td width="144"><font size="4">Pizza Calzone</font></td>
              <td width="126"><font size="4">€ 7,45</font></td>
            </tr>
            <tr>
              <td width="66">
                <input type="checkbox" value="checkbox">
              </td>
              <td width="144"><font size="4">Grüner Salat</font></td>
              <td width="126"><font size="4">€ 5,05</font></td>
            </tr>
            <tr>
              <td colspan="2"><font size="4">Summe gesamt in €</font></td>
              <td width="126">
                <input type="text" >
              </td>
            </tr>
            <tr>
              <td colspan="2"> <font size="4">
                <input type="button" name="Button" value="   Jetzt berechnen    ">
                </font> </td>
              <td width="126">
                <input type="reset" name="Button2" value="   Zurück   ">
              </td>
            </tr>
            <tr>
              <td colspan="2"> </td>
              <td width="126"> </td>
            </tr>
          </form>
        </table>
        <p><font size="5">Aktionswoche: Bestellen Sie drei Aktions-Pizzen zum Preis
          von einer!<br>
          Nähere Informationen zu unserem Angebot erhalten Sie</font> <a href="#" onClick="fensteropen()"><font size="6">hier</font></a></p>
      </div>
      </body>
      </html>

      1. Hi,

        kannst du mir bei meinem Problem helfen? Verstehe nix so richtig...

        Könnte ich vielleicht, will ich aber nicht, da Du das Forum hier vollspammst.
        Nicht nur ein (inzwischen gelöschter) zweiter Thread, jetzt müllst Du auch noch andere Threads zu.

        cu,
        Andreas

        --
        MudGuard? Siehe http://www.Mud-Guard.de/
        Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
        1. vollspammen? Was kann ich dagegen tun? Verzeihung..