Text automatisch selektieren
Freezer
- javascript
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.)
Hallo,
Schau mal hier:
</archiv/2007/8/t157769/#m1026406>
Mathias
Vielen Dank.
Genau das wonach ich gesucht habe :D
Gruss
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
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
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