Ankündigung

Einklappen
Keine Ankündigung bisher.

form.getSelection() Text setzten

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

  • form.getSelection() Text setzten

    Halli Hallo welch schöner Mittwoch und so schön nass

    Ich versuche gerade verzweifelt einen Selektierten Text zu setzten...

    Code:
    var frame = parent.frames[0].window.document;
        var marked = frame.getSelection();
        var neu ="<a href=\""+url+"\" alt=\""+alt+"\">"+marked+"</a>";
        frame.getSelection()=neu;

    frame.getSelection()=neu; <- möchte halt nicht wie ich...

    Habe Mozilla auch schon gestreichelt und danach in die Doku von

    DOM:window.getSelection - MDC

    nachgeschaut und mich da durch geklickt das Google mänchen läuft sich auch die Füße wund...

    aber es will nich

    Aber ich wette ihr habt da ne Lösung?

    muss ich da eventuell mit ranges arbeiten?*angst*

    Greetz Illus23


  • #2
    darf ich mich dir anschließen?:

    PHP-Code:
    var images './bbcodes';
    var 
    IE navigator.appName == "Microsoft Internet Explorer" true false;
    var 
    FF = !document.all && document.getElementById && !this.isOpera;
    function 
    Init(editor_id)
    {
      if (
    IE)
      {    
        
    referer document.getElementById(editor_id).contentWindow.document;
        
    referer.designMode "on";;
      }
      else if(
    FF)
      {
        
    referer document.getElementById(editor_id).contentWindow.document;
        
    referer.designMode "on";
      }
      else
      {
        
    window.alert("Der Editor unterstuetzt Ihren Browser nicht");
      }
    }
     
    function 
    do_Bold()
    {
      var 
    marked window.getSelection();
      
    alert(marked);
      var 
    marked_ marked.getRangeAt(0);
      
    alert(marked_);
      
    //referer.execCommand('bold', false, null);

    mein problem ist es in der do_Bold() funktion überhaupt eine markierung zu bekommen.. beide alerts sind jedemal leer. vllt. kannst du mir da helfen.

    Ambience
    Ich gebe gerne ICQ-Support gegen ein kleines Endgelt.

    Kommentar


    • #3
      habe dich in icq angetickert

      wo is den der unterschid zwischen contentWindow.document und contentDocument kann es eventuell daran liegen?

      (bin ja [noch] net so nen js mensch)

      Kommentar


      • #4
        @Ambience: Schau dir mal diesen Auschnitt aus SelfHTML an: SELFHTML: JavaScript / Objektreferenz / document!
        Ist wie immer sehr browserspezifisch!

        Btw wie soll eigentlich deine Variable FF funktionieren? isOpera gibts bei dir nicht und this ist in diesem Kontext sowieso nicht definiert ^^ Aus welchem Code hast du dir das rauskopiert?

        Gruss

        Kommentar


        • #5
          von forum.js-welt.de

          hmm.. diese funktion mit selektierten text geht auch nicht bei mir...
          Ich gebe gerne ICQ-Support gegen ein kleines Endgelt.

          Kommentar


          • #6
            Probiers mal mit diesem Code:
            PHP-Code:
            function getSelection() {
                var 
            ifrm = ;//Referenz zu deinem iFrame einsetzen
                
            var doc ifrm.document;
                var 
            sel null;
                if(
            ifrm.getSelection){
                    
            sel ifrm.getSelection();
                }
                else if(
            doc.getSelection) {
                        
            sel doc.getSelection();
                }
                else if(
            doc.selection) {
                    
            sel doc.selection;
                }
                return 
            sel;

            und um die Range (für Nodes etc) zu kriegen:
            PHP-Code:
            function getRange(sel) {
                return 
            sel.createRange sel.createRange() : sel.getRangeAt(0);

            und der Parameter von getRange ist genau das, was dir die Funktion getSelection() zurückgibt! Weiss aber nicht, ob du die Range überhaupt brauchst!

            Gruss

            Kommentar


            • #7
              naja di rückgabe hab ich ja von getSelection ich bräucht jetzt die setSlection^^^^

              Kommentar


              • #8
                @fragnicht: Meine Antwort war auf Ambience bezogen, sorry!

                Ich glaube aber kaum, dass du genau das, was du von getSelection zurückkriegst direkt wieder markieren kannst, vor allem nicht, wenn du es vorher durch etwas anderes ersetzt! Dann stimmen ja die Start- und Endposition der Range nicht mehr! Wahrscheinlich musst du den eingefügten Code zuerst wieder ein eine Range einfügen und den dann selektieren!

                Gruss

                Kommentar


                • #9
                  Naja es ist ca so
                  var neu = getSelection();

                  var link = "blabla"+neu+"blabla";

                  jetzt soll link halt zurück geschrieben werden

                  Kommentar


                  • #10
                    Schau dir mal das hier an: JavaScript: Formulare: Text an Cursorposition einfügen
                    Der vom User selektierte Text wird ja sowieso direkt überschrieben, weil er markiert ist! Sollte also das Richtige sein!

                    Gruss

                    Kommentar


                    • #11
                      hihi danke fast habe ich bei jswelt auch bekommen den link aber ich bin zu dämlich mit Hilfe der Mozilla - Doku und der Beschreibung das auf iframes und div umzubauen...

                      Kommentar


                      • #12
                        Dann poste doch mal deinen neuen Code und die Fehlermeldung(en), die du kriegst! Einfach "ich kriegs nicht hin" nützt niemandem was ^^

                        Gruss

                        PS: Ich weiss, dass du den Link auch bei jswelt bekommen hast

                        Kommentar


                        • #13
                          Heho lsutige story es ist montagm orgen und ich springe gleich gegen die wand

                          var marked = parent.frames[0].window.document.getSelection();

                          lieferte mir bis Freitag mittag das was im iFrame markiert war jetzt seit Montag 8 Uhr nicht mehr...

                          Hat sich JavaScript übers Wochenende verändert oder worran kann es liegen das es auf einmal nicht geht?

                          geändert am Code würde soweit nix...
                          Fehlermeldung gibt es nicht...
                          Fehler-Konsole sagt nix...
                          Firebug sagt nix...

                          //EDIT

                          Habe den neue Feher gefunden

                          Code:
                          Fehler: uncaught exception: [Exception... "Component returned failure code: 0x80004003 (NS_ERROR_INVALID_POINTER) [nsIDOMNSHTMLDocument.execCommand]"  nsresult: "0x80004003 (NS_ERROR_INVALID_POINTER)"  location: "JS frame :: http://pir*.de/system/login/workspace/editor.js :: format :: line 115"  data: no]
                          Bin am googlen kam aber noch nicht viel raus!

                          Kommentar


                          • #14
                            Btw zu deinem ursprünglichen Problem einen Text zu markieren:

                            Hab gestern aus eigenem Interesse das halbe Internet abgesucht und keine Lösung gefunden! Für Textareas, Inputs etc kann man es problemlos programmieren, dass man Anfangs- und Endposition angibt und alles, was dazwischen ist,wird markiert! Für WYSIWYG Editoren geht das nur über Nodes und da steckt der Hund begraben! Man müsste genau vor und hinter dem zu markierenden Bereich irgendwelche Tags haben, die einen Node im DOM darstellen! Da das aber zu 99.99% nicht der Fall ist, musste ich leider feststellen, dass es so nicht gelöst werden kann

                            Gruss

                            Kommentar


                            • #15
                              naja text makiert konnte ich ganz gut umgehen mit insert html wenn jetzt noch das da oben geht ist der editor fast fertig dann kommt noch bilder einfügen und dann ist er fertig wird als rar gemacht und dann kan nsich den jeder laden aber bis dahin muss mir da jemand helfen!!!!

                              HILFE^^

                              Kommentar

                              Lädt...
                              X