Freezer: Text automatisch selektieren

Hallo zusammen,

Ich zerbrech mir im moment so bisserl den Kopf und bin mir auch ned sicher ob das, was ich möchte, überhaupt möglich ist. Also, ich möchte gerne wenn ich auf ein Element in meinem Browser klicke, dass der gesamte Inhalt dieses Elements selektiert wird (damit ich das nicht manuell machen muss). Dahinter steckt die gleiche Systematik wie bei einer Textarea. Da der text in einer Textarea einfach ned sehr anschaulich ist, möchte ich versuchen es über diesen Weg zu lösen.

So hab ich mir mein HTML vorgestellt:

<p class="code" onclick="doSelect(this);">
<code>
Hier kommt mein Code rein.
</code>
</p>

Hat mir jemand einen Tipp wonach ich suchen muss um hier zum Erfolg zu kommen?

Freundliche Grüsse
Freezer

PS: Kennt wer ne Möglichkeit wie ich Typo3-Script anschaulich darstellen kann? (mit Farben etc.)

  1. Hallo,

    Schau mal hier:
    </archiv/2007/8/t157769/#m1026406>

    Mathias

    1. Vielen Dank.

      Genau das wonach ich gesucht habe :D

      Gruss

    2. Hallo,

      Ich muss meine Lösung korrigieren: Es ist mir aufgefallen, dass die gar nicht im Opera 9.23 und im neuesten 9.5-Alpha-Build 1600 funktioniert, ich aber groß dazugeschrieben hab, dass sie es würde.

      Das liegt daran, dass Opera zwar die Firefox-Funktion selectAllChildren kennt, diese zeitigt keine Wirkung. Opera kennt aber die TextRanges aus dem Internet Explorer, allerdings nur über document.selection.createRange, nicht über document.body.createTextRange.

      Wir kommen also zu dieser Funktion:

      function markieren (elem) {  
       if (document.selection && document.selection.createRange) {  
        var textRange = document.selection.createRange();  
        textRange.moveToElementText(elem);  
        textRange.select();  
       } else if (window.getSelection) {  
        var selection = window.getSelection();  
        selection.selectAllChildren(elem);  
       }  
      }
      

      Erfolgreich getestet in Firefox 1.0.8, IE 6, Opera 9.23
      Safari nicht getestet, Konqueror 3.5.7 steigt geordnet aus, weil er nix kann.

      Testseite
      (Zumindest »markieren3« muss markiert werden beim Überfahren mit der Maus.)

      Archivsuche-Honeypot: Text, Inhalt, markieren, auswählen, selektieren, Markierung, Auswahl, ohne, Formular, Feld, input, textarea, kopieren

      Mathias

      1. Testseite(Zumindest »markieren3« muss markiert werden beim Überfahren mit der Maus.)

        Safari 3 bzw. ein aktueller WebKit (r26101 von heute) markieren nichts, siehe auch Bug 13399. Verfügbare Objekte:

        document.body.createTextRange: undefined
          document.selection: undefined
          window.getSelection: function
          + selection.selectAllChildren: undefined

        Hilft dieser Workaround?

          d=window.getSelection()+'';  
          d=(d.length==0)?document.title:d;  
          alert(d);
        

        Ergänzend noch Opera 9.50a Mac (build 4460):

        document.body.createTextRange: undefined
          document.selection: object
          + document.selection.createRange: function
          + TextRange.moveToElementText: function
          + TextRange.select: function
          window.getSelection: function
          + selection.selectAllChildren: function

        Archivsuche-Honeypot: Text, Inhalt, markieren, auswählen, selektieren, Markierung, Auswahl, ohne, Formular, Feld, input, textarea, kopieren

        Cool, Tagging! *g*

        Roland

        --
        Aquahu akbar!
        1. Hallo,

          Danke für die Tests!

          document.body.createTextRange: undefined
            document.selection: undefined
            window.getSelection: function
            + selection.selectAllChildren: undefined

          Das sieht sehr schlecht aus. Damit kann ich nicht arbeiten...

          Hilft dieser Workaround?

          Leider gar nicht. Damit lässt sich der von Hand selektierte Text auslesen, aber nicht die Markierung setzen.

          Mathias