Xonder: BB-ForumCode und Firefox

Hallo

Ich arbeite derzeit daran das CC2 (Cutecast) Forum BB-Code tauglich zu machen .... also so,das die BB-Tags direkt auf den Markierten Text angewendet werden können.

Vorweg:
Mit dem IE funktioniert alles 1A,
Leider macht der FireFox probleme ..... bei diesem kann man den Text nicht nachträglich editieren!

1.) Markierter Text wird nicht in das JS-Fenster übernommen (wo der Tag dan erzeigt wird)
2.) Der TAG wird am ende des Textes eingestellt .... und nicht dort wo der Courser blinkt.

Hätte vielleicht wer einen Tip für mich?

Hier mal die wichtigsten Code ....

textarea Code. <<

<textarea class=input name=message style="width:100%; height:150px;" wrap="virtual" onChange=getActiveText(this) onclick=getActiveText(this) onFocus=getActiveText(this)></textarea>

zuständige (ausgelagerte) JS Code <<

var text = "";
function getActiveText(selectedtext) {
        text = (document.all) ? document.selection.createRange().text : document.getSelection();
        if (selectedtext.createTextRange) {
            selectedtext.caretPos = document.selection.createRange().duplicate();
        }
        return true;
}

function AddText(NewCode) {
        if (document.acinput.message.createTextRange && document.acinput.message.caretPos) {
                var caretPos = document.acinput.message.caretPos;
                caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? NewCode + ' ' : NewCode;
        } else {
                document.acinput.message.value+=NewCode;
        }
        setfocus();
}

function setfocus() {
document.acinput.message.focus();
}

Wer es testen möchte kann es hier tun (Testforum)
BN: cutecode Passwort: cutecode

http://www.xonder.com/cgi-bin/forenserver1/foren/F_0001/cutecast.pl?forum=2

lg XTC

  1. Hallo,

    der Code, den Du da verwendest, funktioniert nur im IE bzw. für alle anderen Browser fügt er den Text halt zwangsläufig ans Ende der Textarea an.

    Lies Dir mal < http://aktuell.de.selfhtml.org/tippstricks/javascript/bbcode/> durch, dort ist ein Ansatz beschrieben, wie man so etwas browserübergreifender macht.

    Viele Grüße,
    Christian

    1. Hallo Christian.

      Lies Dir mal http://aktuell.de.selfhtml.org/tippstricks/javascript/bbcode/ durch, dort ist ein Ansatz beschrieben, wie man so etwas browserübergreifender macht.

      Dazu wäre der Hinweis angebracht, dass Opera ab der Version 8.0 mit dem Objekt selection klar kommt, somit also die IE-Version im Skript greift und der BB-Code direkt an der Cursorposition eingefügt werden kann.

      Gruß, Ashura

      --
      Selfcode: sh:( fo:) ch:? rl:( br:^ n4:& ie:{ mo:) va:) de:> zu:) fl:( ss:| ls:[ js:|
      Try it: Become an Opera Lover in 30 days
      Meine Browser: Opera 8.0 | Firefox 1.0.4 | Lynx 2.8.3 | Netscape 4.7 | IE 6.0
      IE Layout-Workaround №1: <!--[if IE]><style type="text/css">*{display:none;}</style><![endif]-->
      1. Hallo

        Hallo Christian.

        Du kennst mich !?

        @BB-Code

        Wenn ich mir den z.b. YaBB-Code anschaue (funktioniert bei allen Browsern)

        function storeCaret(text) {
        if (text.createTextRange) text.caretPos = document.selection.createRange().duplicate();
        }

        function AddSelText(bbopen, bbclose) {
        if (document.postmodify.message.caretPos) {
          document.postmodify.message.caretPos.text = bbopen + document.postmodify.message.caretPos.text + bbclose;
          document.postmodify.message.caretPos.select();
        }
        else if (document.postmodify.message.setSelectionRange) {
          var selectionStart = document.postmodify.message.selectionStart;
          var selectionEnd = document.postmodify.message.selectionEnd;
          var replaceString = bbopen + document.postmodify.message.value.substring(selectionStart, selectionEnd) + bbclose;
          document.postmodify.message.value = document.postmodify.message.value.substring(0, selectionStart) + replaceString + document.postmodify.message.value.substring(selectionEnd);
          document.postmodify.message.setSelectionRange(selectionStart + bbopen.length, selectionEnd + bbopen.length);
        }
        else document.postmodify.message.value += bbopen + bbclose;
        document.postmodify.message.focus()
        }

        function AddText(text) {
        AddSelText('', text);
        }

        .... frag ich mich ob man nicht meinen Code anpassen könnte .... nur ganz check ich das nicht :-(

        Jedoch schon mal danke für die Lins .... werde mir diese man ansehen!

        lg XTC

        1. Hallo,

          Hallo Christian.
          Du kennst mich !?

          Hehe, Christian Seiler heißt zufällig auch Christian und auf dessen Posting hat Ashura auch gepostet ;-)

          Grüße
          Jeena Paradies

          --
          Weblogsoftware Jlog
          Was gutes gesucht? Dann nimm doch Gourmetica Mentiri
          1. Hallo

            Hehe, Christian Seiler heißt zufällig auch Christian und auf dessen Posting hat Ashura auch gepostet ;-)

            Grüße
            Jeena Paradies

            Stimmt! .... hab ich nach dem Submit auch bemerkt ;-)

            lg XTC