Zu den Aufzeichnungen der tutorials.de-Live-Workshops
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
441
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Thopeto Thopeto ist offline Mitglied Gold
    Registriert seit
    Jan 2005
    Beiträge
    227
    Guten Tag,

    ich habe einen IFrame im design Modus und nun möchte ich den selektierten Text bekommen, inkl html Tags. Ich bekomme nur immer den reinen Text ohne jegliche Html Elemente, die in diesem Abschnitt beinhaltet sind.

    Bisher bekam ich den selektierten Text so:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    this.getSelection = function() {
                var win = this.frame;
          var doc = this.frame.document;
        
          if (win.getSelection) {
            return win.getSelection().toString();
          } else if (doc.selection && doc.selection.createRange) {
            return doc.selection.createRange().text;
          }
            };

    Der liefert mir aber nur den reinen Text wieder. Kann jmd helfen?

    Gruß
     

  2. #2
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Moin,

    im IE geht das recht einfach über die Eigenschaft htmlText des Textrange-Objektes.

    In anderen Browsern ist das etwas umständlicher.
    Dort kannst du bspw. den Inhalt des TextRange in einen anderen Knoten kopieren, und dann das innerHTML dieses Knotens auslesen:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    
    /**
      * function getSelectedHtml
      * @param object win window-Object
      * @return string HTML-Source der Selektion 
      **/
    function getSelectedHtml(win)
    {
      if(document.all && !window.opera)
      {
        var r=win.document.selection.createRange().htmlText;
      }
      else
      {
        try
        {
            var n=win.document.createElement('div');
            n.appendChild(win.getSelection().getRangeAt(0).cloneContents());      
            r=n.innerHTML;
            delete n;
        }
        catch(e)
        {
          var r='';
        }
    }
    return r;
    }
     

  3. #3
    Thopeto Thopeto ist offline Mitglied Gold
    Registriert seit
    Jan 2005
    Beiträge
    227
    vielen dank für deine schnelle antwort. Es funktioniert auch nahezu perfekt, nur wenn man im IE ein Bild markiert hat, greift win.document.selection.createRange().htmlText; nicht. Weißt du zufällig, wie ich rausfinden kann, ob ein objekt markiert ist?

    gruß
    Thorsten
     

  4. #4
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Da wird lt. Recherchen ein anderer Range-Typ namens "Control" erzeugt, dieser besitzt keine Eigenschaft htmlText.

    Dafür besitzt er aber eine Collection mit allen beinhalteten Elementen

    Das nötige Update für den IE-Zweig:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    if(document.all && !window.opera)
    {
      var rng=win.document.selection.createRange();
      var r = rng.htmlText;
      if(typeof r=='undefined')
      {
        r=rng.item(0).outerHTML
      }
    }
     

Ähnliche Themen

  1. iFrame Text auslesen (ohne HTML-Tags, reiner Text... wysiwyg)
    Von Fabian Frank im Forum Javascript & Ajax
    Antworten: 6
    Letzter Beitrag: 06.06.10, 03:35
  2. HTML -> Text (formatiert, aber ohne Tags)
    Von brauch_mehr_schlaf im Forum PHP
    Antworten: 22
    Letzter Beitrag: 19.09.05, 09:00
  3. Antworten: 1
    Letzter Beitrag: 22.03.05, 09:21
  4. HTML - Tags als Text
    Von flasherMX im Forum HTML & XHTML
    Antworten: 2
    Letzter Beitrag: 05.07.04, 10:47
  5. HTML-tags als TEXT oder BINARY speichern?
    Von dave im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 23.10.01, 08:28

Stichworte