# DIV Inhalt markieren



## killerbees19 (18. Juli 2007)

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


----------



## Sven Mintel (19. Juli 2007)

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:

```
<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>
```


----------



## killerbees19 (19. Juli 2007)

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


----------



## Sven Mintel (20. Juli 2007)

Das Beispiel, wie es dort steht, funktioniert bei mir auch im Mozilla.


----------



## killerbees19 (21. Juli 2007)

Sven Mintel hat gesagt.:


> Das Beispiel, wie es dort steht, funktioniert bei mir auch im Mozilla.


Bei mir aber leider nicht im Opera, und den benutze ich selbst andauernd 


MfG Christian


----------



## Sven Mintel (21. Juli 2007)

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.


----------



## killerbees19 (21. Juli 2007)

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


----------



## khkrause (24. Juli 2008)

killerbees19 hat gesagt.:


> 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


----------



## Sven Mintel (24. Juli 2008)

Moin,


```
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)


----------



## khkrause (24. Juli 2008)

Sven Mintel hat gesagt.:


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



Phantastisch, danke Funktioniert perfekt.

khk


----------

