Olaf: DragAndDrop im DIV ohne Text zu markieren

Hallo,

ich habe in einem DIV Text stehen <DIV id="123" ondragstart="startDrag()" onmousedown="fireEvent('ondragstart')" >Artikel 1</DIV>

Aufgabe:
Um die Info per Drag&Drop über die Zwischenablage in einem anderem Frame zu verschieben, muß ich den Text zuerst markieren und dann neu fokussieren um diesen zu verschieben.

Problem:
Gibt es eine Möglichkeit den Text im DIV schon beim mouseover zu selektieren (ich möchte keine Textarea oder Input verwenden).

Versuch:
Ich habe bereits den Weg versucht, den Text in eine versteckte Textarea zu kopieren ...

function dragstart() {
        srcObj = window.event.srcElement;
        holdtext.innerText = srcObj.id;
 Copied = holdtext.createTextRange();
 Copied.select();
 Copied.execCommand("Link");

im Zwischspeicher ist der Text dann.
weiter gehts um den Text in einem anderen Frame in Empfang zu nehmen

var dragData = window.event.dataTransfer;
    if (dragData != null) {
  dragData.effectAllowed = "all";
  dragData.setData('Text',srcObj.id);
    }

Fehler: window.event.dataTransfer ist null

hat einer eine Idee

  1. hi,

    ich habe in einem DIV Text stehen <DIV id="123" ondragstart="startDrag()" onmousedown="fireEvent('ondragstart')" >Artikel 1</DIV>

    ungültige ID.

    Aufgabe:
    Um die Info per Drag&Drop über die Zwischenablage in einem anderem Frame zu verschieben, muß ich den Text zuerst markieren und dann neu fokussieren um diesen zu verschieben.

    warum willst du dazu die zwischenablage bemühen?
    die wird sich vermutlich nicht in allen browser per JS ansprechen lassen.

    Gibt es eine Möglichkeit den Text im DIV schon beim mouseover zu selektieren (ich möchte keine Textarea oder Input verwenden).

    wozu selektieren? du willst doch nur den inhalt des divs haben, oder?
    den bekommst du über node.data, wenn's ein reiner textinhalt ist - anderfalls beispielsweise auch über innerHTML.

    Ich habe bereits den Weg versucht, den Text in eine versteckte Textarea zu kopieren ...

    function dragstart() {
            srcObj = window.event.srcElement;
            holdtext.innerText = srcObj.id;
    Copied = holdtext.createTextRange();
    Copied.select();
    Copied.execCommand("Link");
    im Zwischspeicher ist der Text dann.

    funktioniert das auch in browser, die nicht aus redmond stammen?

    weiter gehts um den Text in einem anderen Frame in Empfang zu nehmen
        var dragData = window.event.dataTransfer;
        if (dragData != null) {
      dragData.effectAllowed = "all";
      dragData.setData('Text',srcObj.id);
        }

    Fehler: window.event.dataTransfer ist null

    welcher event soll denn in der zu diesem anderen frame gehörenden window-instanz stattgefunden haben?

    gruß,
    wahsaga

    --
    "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
    1. ich habe in einem DIV Text stehen <DIV id="123" ondragstart="startDrag()" onmousedown="fireEvent('ondragstart')" >Artikel 1</DIV>

      ungültige ID.

      Um die Info per Drag&Drop über die Zwischenablage in einem anderem Frame zu verschieben, muß ich den Text zuerst markieren und dann neu fokussieren um diesen zu verschieben.

      warum willst du dazu die zwischenablage bemühen?
      die wird sich vermutlich nicht in allen browser per JS ansprechen lassen.

      Gibt es eine Möglichkeit den Text im DIV schon beim mouseover zu selektieren (ich möchte keine Textarea oder Input verwenden).

      wozu selektieren? du willst doch nur den inhalt des divs haben, oder?

      Ich habe bereits den Weg versucht, den Text in eine versteckte Textarea zu kopieren ...

      function dragstart() {
              srcObj = window.event.srcElement;
              holdtext.innerText = srcObj.id;
      Copied = holdtext.createTextRange();
      Copied.select();
      Copied.execCommand("Link");
      im Zwischspeicher ist der Text dann.

      funktioniert das auch in browser, die nicht aus redmond stammen?

      weiter gehts um den Text in einem anderen Frame in Empfang zu nehmen
          var dragData = window.event.dataTransfer;
          if (dragData != null) {
        dragData.effectAllowed = "all";
        dragData.setData('Text',srcObj.id);
          }

      Fehler: window.event.dataTransfer ist null

      welcher event soll denn in der zu diesem anderen frame gehörenden window-instanz stattgefunden haben?

      1.
      Die id ist nur ein Beispiel

      2.
      Zwischenablage: deshalb weil ich die "Textinformation" hier z.B. die ID in einem anderem Browserfenster benötige. Der User soll aus einer "Textliste" eine Eintrag per Drag&Drop in ein anderes Browserfenster ziehen können (der IE ist übrigends Vorgabe). In dem zweiten Fenster gibt es in einem definierten Bereich ein ondrop() Event, in dem ich die Information entgegen nehme.

      3.
      Das funktioniert bei Images ja sehr gut - Mousedown und drag.
      Bei Text hab ich das Problem, dass dieser erst markiert werden muss, um das Event "ondragstart" auslösen zu können.
      Das was ich eigentlich nur wissen möchte ist, genau das "erst markieren" zu vermeiden. Der User soll das "Gefühl" haben das er den Text per Drag&Drop genauso draggen kann wie ein Bild.

      Ich hoffe mein Absicht ist jetzt klar geworden :)

      Gruß Olaf