Announcement

Collapse
No announcement yet.

Markierten Quelltext auslesen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Markierten Quelltext auslesen

    Hallo Leute,
    Ich habe jetzt eine Funktion geschrieben, die einem den Text zurückgibt, den der Benutzer mit der Maus markiert hat. (In diesem Fall innerhalb eines iframes.)
    Nun brauche ich jedoch nicht nur den markierten Text, sondern auch den dazugehörigen Quellcode.
    Wenn also der Benutzer zum Beispiel einen solchen Text markiert:

    Die Kuh lief um den See

    dann möchte ich, dass meine Funktion mir.
    Code:
    'Die Kuh lief <strong>um den</strong> See.
    zurückliefert.
    Aber das tut meine Funktion nicht - ist ja auch klar:

    Code:
    function getselectedtext() {
        if (editor.contentDocument.getSelection) {        
            var range = editor.contentDocument.getSelection();
            return range;
        }
        else {
            if (document.selection.createRange) {      
                var range = editor.contentDocument.selection.createRange();
                return range.text;
            }
    
        }
    }
    Hat jemand vielleicht eine Idee oder ist so etwas nur schwer zu realisieren?
    Ich habe zwar einen Lösungsansatz aber der hat zu viele Haken.

    Dankeschön
    777

  • #2
    Oh - wie es scheint beantworte ich meine Fragen dann doch oft selbst :-)
    Denn die Lösung ist auf englisch hier zu finden:

    http://cksource.com/forums/viewtopic.php?f=5&t=11997

    Comment


    • #3
      Hier noch meine Funktion, falls es jemanden interessiert. Ich habe jedoch noch ein Problem damit:

      Code:
      function getselectedtext() {
          if (editor.contentDocument.getSelection) {
              var range = getrange(editor.contentWindow.getSelection());        
              var clonedSelection = range.cloneContents();
              var div = document.createElement('div');
              div.appendChild(clonedSelection);
              return div.innerHTML;
          }
          else {
              if (document.selection.createRange) {
                  var range = editor.contentDocument.selection.createRange();            
                  return range.htmlText;
              }
      
          }
      }
      Das funktioniert einwandfrei. Einziges Problem ist noch folgendes:

      Die Kuh lief um den See.

      Wenn der Benutzer jetzt 'Die Kuh lief um' markiert und die Funktion ausgeführt wird, so sollte ja eigentlich:

      Code:
      Die Kuh lief <strong> um
      herauskommen.
      Es kommt aber stattdessen

      Code:
      Die Kuh lief <strong> um</strong>
      heraus.
      Wie es scheint schließt das Rangeobjekt automatisch geöffnete Tags. Das darf aber nicht geschehen.
      Kann sich jemand vorstellen, woran das liegt?

      Comment


      • #4
        Hallo,
        Originally posted by 777 View Post
        ...Wie es scheint schließt das Rangeobjekt automatisch geöffnete Tags. Das darf aber nicht geschehen.
        Kann sich jemand vorstellen, woran das liegt?
        Da hierbei intern nicht mit einem Text, sondern mit einem DOM-Baum gearbeitet wird, sind alle Tags immer geschlossen. In einer Baumstruktur gibt es keine nicht-geschlossenen-Tags.

        Gruß Falk
        Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

        Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

        Comment


        • #5
          Irgendeine Idee oder einen Ansatz um das zu umgehen?

          Comment

          Working...
          X