JS-RichTextEditor

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • JS-RichTextEditor

    Ich habe innerhalb eines CMS einen JS-Editor implementiert, der ein paar Schwächen aufweist, die ich leider alleine nicht in den Griff bekomme.

    1.) Innerhalb des Editors gibt es eine Funktion, um Bilder einzufügen. Leider hat das Bild nicht automatisch border="0". Die Funktion sieht folgendermaßen aus:

    function AddImage(rte) {
    imagePath = prompt('Enter Image URL:', 'http://');
    if ((imagePath != null) && (imagePath != "")) {
    document.getElementById(rte).contentWindow.focus()
    document.getElementById(rte).contentWindow.document.execCommand('InsertImage', false, imagePath);
    }
    document.getElementById(rte).contentWindow.focus()
    }

    Und der Aufruf der Funktion:
    document.writeln(' <td><img class="btnImage" src="rte/images/post_button_image.gif" width="25" height="24" alt="Add Image" title="Add Image" onClick="AddImage(\'' + rte + '\')"></td>');

    Hat jemand eine Idee, wie das Skript aussehen muß, um den Rand auf "O" zu stellen?

    2.)Bei Verlinkungen die vom Editor erzeugt werden, gibt es keine Möglichkeit, das Target anzugeben.

    function FormatText(rte, command, option) {
    if ((command == "forecolor") || (command == "hilitecolor")) {
    parent.command = command;
    buttonElement = document.getElementById(command);
    document.getElementById('cp' + rte).style.left = getOffsetLeft(buttonElement) + "px";
    document.getElementById('cp' + rte).style.top = (getOffsetTop(buttonElement) + buttonElement.offsetHeight) + "px";
    if (document.getElementById('cp' + rte).style.visibility == "hidden")
    document.getElementById('cp' + rte).style.visibility="visible";
    else {
    document.getElementById('cp' + rte).style.visibility="hidden";
    }

    //get current selected rte
    currentRTE = rte;

    //get current selected range
    var sel = document.getElementById(rte).contentWindow.document.selection;
    if (sel!=null) {
    rng = sel.createRange();
    }
    }
    else if (command == "createlink") { // && browser.isIE55up == false
    var szURL = prompt("Enter a URL:", "");
    document.getElementById(rte).contentWindow.document.execCommand("Unlink",false,null)
    document.getElementById(rte).contentWindow.document.execCommand("CreateLink",false,szURL)
    }
    else {
    document.getElementById(rte).contentWindow.focus();
    document.getElementById(rte).contentWindow.document.execCommand(command, false, option);
    document.getElementById(rte).contentWindow.focus();
    }
    }

    Der Aufruf der Funktion sieht so aus:

    document.writeln(' <td><img class="btnImage" src="rte/images/post_button_hyperlink.gif" width="25" height="24" alt="Insert Link" title="Insert Link" onClick="FormatText(\'' + rte + '\', \'createlink\')"></td>');


    An welcher Stelle müsste hier z.B. target="blank" eingefügt werden? Ideal wäre natürlich ein Popup-menü mit Auswahl zwischen _blank, _self etc. :-)

    Vielen Dank für Eure Hilfe
    Lufine

  • #2
    Sagt mir nichts... kein Plan, was JS anbetrifft.

    Hast Du ´nen Tipp?

    Ich denke mal, daß innerhalb der Klammer (\'' + rte + '\') ergänzt werden muss - aber was und wie?

    Kommentar


    • #3
      setz mal statt
      Code:
      ('InsertImage', false, imagePath);
      das ein:
      Code:
      ('InsertImage', TRUE, imagePath);
      gibts nen dialog?
      Kissolino.com

      Kommentar


      • #4
        Ja, Dialog öffnet sich:

        Bild - Bildherkunft, Text ändern, Ausichtung, Breite des Randes ...

        Das funktioniert allerdings leider nur auf dem Windows-PC. Auf dem Macintosh (und damit arbeiten die Redakteure) funktionierts leider nicht. Da wird jetzt noch nicht mal mehr das Bild eingefügt :-(

        Schade - wäre ne gute Lösung gewesen.

        Kommentar


        • #5
          wenn du das "false" wieder reingibst, gehts auf dem mac?
          *interessiert_bin*

          2 möglichkeiten:

          1. CSS
          - setz ein standard css-format für bilder
          - nimm für layoutbilder ein eigenes format (falls du rahmen brauchst)

          2. würgaround (denkansatz):
          - leite die ausgabe in eine variable um
          - ändere den htmltext mit den regex-funktionen von javascript
          - sende den variableninhalt an eine funktion, die text einfügt
          ^^ könntest du auch für das target versuchen

          wenn das nicht klappt ... schick den mac in die wüste
          Kissolino.com

          Kommentar


          • #6
            Mit FALSE funktionierts auf dem MAC...

            In die Wüste schicken geht leider, leider nicht - hätte ich zwischendurch gerne schon ein paar Mal gemacht. Aber nicht, weil der MAC nichts taugt, sondern weil von den Softwareentwicklern meistens ignoriert wird, dass es auch andere Betriebssysteme außer Windows gibt :-(

            Zu Deinen Vorschlägen: ich probiere es wohl mal via CSS, obwohl ich momentan noch nicht so den rechten Plan habe, wie das mit der Anbindung an das Skript funktionieren soll. Aber von JavaScript habe ich wie gesagt so gar keinen Plan, so dass Vorschlag 2 leider nicht in Frage kommt...

            Danke auf jeden Fall erstmal für Deine Hilfe

            Kommentar

            Lädt...
            X