So markieren / wählen Sie den Inhalt eines DIV-Tags aus, wenn der Benutzer auf das DIV klickt ... Die Idee ist, dass der gesamte Text hervorgehoben / ausgewählt wird, sodass der Benutzer den Text nicht manuell mit der Maus und möglicherweise markieren muss Vermissen Sie einen Teil des Textes?
Angenommen, wir haben einen DIV wie folgt:
<div id="selectable">http://example.com/page.htm</div>
... und wenn der Benutzer auf eine dieser URLs klickt, wird der gesamte URL-Text hervorgehoben, sodass er den ausgewählten Text einfach im Browser verschieben oder die vollständige URL mit einem Rechtsklick kopieren kann.
Vielen Dank!
quelle
document.getElementById('selectable')
mitthis
. Dann können Sie die Funktionalität unauffällig mehreren Elementen hinzufügen, zum Beispiel mehreren Divs in einem Container:jQuery('#selectcontainer div').click(selectText);
if (window.getSelection) {
für Opera ( quirksmode.org/dom/range_intro.html ) an erster Stelle stehenwindow.getSelection().removeAllRanges();
vorwindow.getSelection().addRange(range);
UPDATE 2017:
So wählen Sie den Inhalt des Knotens aus:
Dies funktioniert in allen modernen Browsern einschließlich IE9 + (im Standardmodus).
Ausführbares Beispiel:
Die ursprüngliche Antwort unten ist veraltet, da
window.getSelection().addRange(range);
sie veraltet istUrsprüngliche Antwort:
Alle obigen Beispiele verwenden:
Das Problem dabei ist jedoch, dass der Knoten selbst einschließlich des DIV-Tags usw. ausgewählt wird.
Um den Text des Knotens gemäß der OP-Frage auszuwählen, müssen Sie stattdessen Folgendes aufrufen:
Das vollständige Snippet wäre also:
quelle
this
das Element auch verwenden, anstatt es anhand der ID abzurufen, solange es sich imclick
Listener des Elements befindet .Es gibt eine reine CSS4-Lösung:
user-select
ist eine CSS-Modul-Level-4-Spezifikation, die derzeit ein Entwurf und eine nicht standardmäßige CSS-Eigenschaft ist, aber von Browsern gut unterstützt wird - siehe # search = user-select .Lesen Sie mehr über die Benutzerauswahl hier auf MDN und spielen Sie hier in w3scools damit
quelle
Die Antwort von Neuroxik war wirklich hilfreich. Ich hatte nur ein Problem mit Chrome, denn als ich auf ein externes Div klickte, funktionierte es nicht. Ich könnte es lösen, indem ich die alten Bereiche entferne, bevor ich den neuen Bereich hinzufüge:
quelle
Für inhaltsbearbeitbare Inhalte (keine regulären Eingaben) müssen Sie selectNodeContents verwenden (und nicht nur selectNode).
HINWEIS: Alle Verweise auf "document.selection" und "createTextRange ()" gelten für IE 8 und niedriger ... Sie müssen dieses Monster wahrscheinlich nicht unterstützen, wenn Sie versuchen, solche kniffligen Dinge zu tun.
quelle
Wenn Sie ein Textfeld verwenden, können Sie Folgendes verwenden: (Über Google)
So sehe ich die meisten Websites. Sie stylen es einfach mit CSS, damit es nicht wie ein Textbereich aussieht.
quelle
this.focus();this.select();
?Dieses Snippet bietet die Funktionalität, die Sie benötigen . Was Sie tun müssen, ist ein Ereignis zu dem Div hinzuzufügen, das fnSelect darin aktiviert. Ein schneller Hack, den Sie absolut nicht ausführen sollten und der möglicherweise nicht funktioniert, würde folgendermaßen aussehen:
Offensichtlich unter der Annahme, dass das mit dem Snippet verknüpfte Element enthalten war.
quelle
Ich fand es nützlich, diese Funktion als jQuery-Plugin zu verpacken:
So wird es eine wiederverwendbare Lösung. Dann können Sie dies tun:
Und es wird Test in der div ausgewählt.
quelle
Wie wäre es mit dieser einfachen Lösung? :) :)
Sicher, es ist keine Div-Konstruktion, wie Sie erwähnt haben, aber es funktioniert trotzdem für mich.
quelle
Niko Lay: Wie wäre es mit dieser einfachen Lösung? :) :)
..... .....
Code vor:
Code nach:
Nur dieser Teil onclick = "this.select ();" id = "auswählbar" in meinem Code hat gut funktioniert. Wählt alle in meinem Codefeld mit einem Mausklick aus.
Danke für die Hilfe Niko Lay!
quelle
Die obige Antwort funktioniert in Chrome nicht, da addRange den zuvor hinzugefügten Bereich entfernt. Ich habe keine Lösung dafür gefunden, abgesehen von einer falschen Auswahl mit CSS.
quelle
Einfach zu erreichen, wenn die CSS-Eigenschaft user-select auf all gesetzt ist. So was:
quelle