DIV Inhalt markieren

killerbees19

Grünschnabel
Hallo.

Ich würde gerne mit Javascript den Inhalt eines DIV Containers markieren, damit der Benutzer dann nur auf Kopieren oder Strg + C drücken braucht. Ist das überhaupt möglich? Ich habe es wie bei einem Formular versucht, mit focus() und select(), aber leider scheint das nicht zu funktionieren.

Danke schon im Voraus für eure Hilfe.


MfG Christian
 
Wirklich sinnvolle Methoden sind mir dafür nicht bekannt.
Mal angenommen, dieser Text im DIV kommt so nur einmal im Dokument vor, könntest du die Methoden zum Auffinden von Text missbrauchen.
Das ginge so:
Code:
<html>
<head>
<title>Test</title>
</head>
<body>

<div>Dies ist ein Text, der markiert werden soll,</div>
<div>während dieser hier nicht markiert werden soll.</div>
<script type="text/javascript">

function select_(obj)
{
  txt=obj.firstChild.data;
  if(window.find)
    {
      window.find(txt,true);
    }
  else
    {
      range = document.body.createTextRange();
      range.findText(txt);
      range.select();
    }
}

select_(document.getElementsByTagName('div')[0]);
</script>
</body>
</html>
 
Der DIV Container hat natürlich eine eindeutige ID, mit dem ich ihm ansprechen könnte.
Ich habe das einfach mal ausgetauscht und es funktioniert!

Vielen Dank :)

EDIT: Mir fällt gerade auf, dass das nur im IE funktioniert. Gibt es da vielleicht noch eine andere Möglichkeit, damit es in allen Browsern funktioniert?


MfG Christian
 
Zuletzt bearbeitet:
Daran kann ich irgendwie nichts ändern, wenn die Opera-Entwickler nicht die nötigen Methoden zur Verfügung stellen, muss man sich damit abfinden.:(

Es gäbe noch die Möglichkeit, dass du statt einem DIV ein TEXTAREA verwendest. Per CSS könntest du es so gestalten, dass man es nicht als solches erkennt. Über die Methode select() kannst du den Text dann markieren.
 
Textarea wäre natürlich auch sofort meine Idee gewesen, aber es handelt sich bei dem Text um einen Source Code der durch einen Highlighter geschickt wird. Aber egal, ist nicht so wichtig :)


MfG Christian
 
Der DIV Container hat natürlich eine eindeutige ID, mit dem ich ihm ansprechen könnte.
Ich habe das einfach mal ausgetauscht und es funktioniert!

auch wenn ich nicht tote Threads wieder ausbuddeln möchte: Könnte ich den angepassten Code haben?

(Ich suche nach einer Möglichkeit, den Text in einem mit eindeutiger div id bezeichneten Container mit einem Click zu markieren. Der Nutzer soll den so markierten Text mittels copy & paste (STRG-C STRG-V) weiterverwenden können (Firefox, kein IE! - daher auch kein script-basiertes Kopieren in die Zwischenablage). Es genügt, wenn der fummelige Markiervorgang mit dem Script unterstützt wird. Die Texte liegen nur innerhalb von <div> vor, keine <textarea>. Meine JS-Kenntnisse sind leider niedriger als gering - zum Anpassen von Scripten mittels Denken und Logik genügt's, zum selbst Schreiben leider nicht...)

Wäre für Tipps und Hinweise (ggf. auch Links) sehr dankbar.

Grüße

khk
 
Moin,

Code:
function selectNodeContents(oId)
{
  o=document.getElementById(oId);
  if(document.all && !window.opera)
    {
      r=document.body.createTextRange();
      r.moveToElementText(o);
      r.select();
    }
  else
  {
    r = document.createRange();
    r.selectNode(o);
    var s = window.getSelection();
    s.removeAllRanges();
    s.addRange(r);
  }
}

Erwartet wird als Parameter die ID des Elements....das wars schon(geht übrigens mittlerweile auch in Opera)
 
Zurück