Forum Doku Wiki Blog

Forumsarchiv 2005, Januar
DragAndDrop im DIV ohne Text zu markieren

archivierte Beiträge lesen

  1. (JAVASCRIPT) DragAndDrop im DIV ohne Text zu markieren von Olaf, 25. 01. 2005, 18:10

DragAndDrop im DIV ohne Text zu markieren

Der folgende Beitrag wurde am 25. 01. 2005, 18:10 Uhr von Olaf veröffentlicht.

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

DragAndDrop im DIV ohne Text zu markieren

Der folgende Beitrag wurde am 25. 01. 2005, 21:36 Uhr von wahsaga veröffentlicht.

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."

DragAndDrop im DIV ohne Text zu markieren

Der folgende Beitrag wurde am 26. 01. 2005, 09:32 Uhr von Olaf veröffentlicht.

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

© 1998-2013 SELFHTMLImpressumSoftware: Classic Forum 3.4