Avatar billede bingokaj Nybegynder
14. august 2003 - 14:52 Der er 14 kommentarer og
1 løsning

Drag 'n drop layer1 på layer2 UDEN koordinater

Hej, jeg sidder og roder med et website, hvor jeg gerne vil have at brugerne skal kunne trække et layer hen på et andet og derved reloade siden med en ny querystring. Hvis siden eksempelvis bliver loadet med layer.asp?lag1=hej&lag2=farvel først, så skal brugeren kunne trække lag1 hen på lag2 og derved reloade siden med ny url, f.eks. layer.asp?lag1=farvel&lag2=hej. Den detection af hvilket lag der trækkes og på hvilket lag det droppes, skal være baseret på NAVNET på laget og ikke på dets x,y-koordinater - jeg kender ikke den præcise placering af  lagene, så derfor kan jeg ikke anvende koordinater.
Avatar billede cdc Novice
14. august 2003 - 15:44 #1
mener ikke denne kører med kordinater: http://hjem.get2net.dk/arntsen/eksperten/404/default.html
Avatar billede bingokaj Nybegynder
14. august 2003 - 17:31 #2
ja, det kan jeg også godt selv lave - men den detecter jo ikke om man trækker det ene lag hen på det andet...
Avatar billede cdc Novice
14. august 2003 - 17:36 #3
i know, men var bare en idé som du kunne arbejde vider på
Avatar billede roenving Novice
14. august 2003 - 17:36 #4
Kan du ikke bare hente position og størrelse på den layer du vil opdage det på !-)

Læste den anden dag et indlæg om drag/drop, som handlede om, hvad det egentlig var de indbyggede metoder i IE var beregnet til og derfor kunne.

Som jeg husker essensen kan kun elementer som kan modtage et input reagere som droptarget ...
Avatar billede bingokaj Nybegynder
14. august 2003 - 22:27 #5
Det må sgu' da kunne lade sig gøre! Om ikke andet får ethvert lag da altid en mouseover-event, uanset om man trækker et andet lag eller ej?
Avatar billede roenving Novice
14. august 2003 - 22:28 #6
Jo selvfølgelig, det var drag-metoderne jeg henviste til (ondragover m.m.)
Avatar billede bingokaj Nybegynder
14. august 2003 - 22:28 #7
jeg er villig til at smide 50 ekstra point i hatten til den der kommer med løsningen ;-)
Avatar billede bingokaj Nybegynder
14. august 2003 - 23:20 #8
--> roenving: vil det sige at hvis jeg f.eks. laver et form-felt, så kan jeg droppe et layer på det og få det til at reagere ?
Avatar billede roenving Novice
14. august 2003 - 23:38 #9
Ja, det skulle reagere på en ondrop-event, så du kunne lave hvad du ønskede ...

-- men som det kan læses af mit tidligere indlæg er det ikke noget jeg har benyttet mig af, men jeg kan citere fra biblen (Javascript Bible):

- onDragStart skydes af på start-elementet een gang
- onDrag fyres af kontinuert mens der trækkes
- onDragEnter fyres af hver gang man kommer ind i et element (inklusive første bevægelse i start-elementet !-)
- onDragOver fyres af kontinuert på det element som cursoren er over
- onDragLeave fyres af på det element man lige har forladt umiddelbart _efter_ onDragEnter på det nye element ...
- onDrop fyres af, når museknappen slippes over et element
- onDragEnd fyres derefter af på start-elementet
Avatar billede roenving Novice
14. august 2003 - 23:39 #10
Hov der manglede et par ord om onDrag:

- onDrag fyres af kontinuert på start-elementet mens der trækkes
Avatar billede bingokaj Nybegynder
15. august 2003 - 14:12 #11
Nu har jeg næsten fundet ud af det! Jeg plankede nedenstående kode fra et website og modificerede den lidt. Det eneste der mangler er reload af siden med variablerne, men det burde være en smal sag :-D

<html>
<head>
<title>Shopping Anyone?</title>

<script language="JScript"><!--
// the object that you are dragging:
var srcObj = new Object;

// string to hold source of object being dragged:
var dummyObj;

function startDrag(){
    // get what is being dragged:
    srcObj = window.event.srcElement;

    // store the source of the object into a string acting as a dummy object so we don't ruin the original object:
    dummyObj = srcObj.outerHTML;

    // post the data for Windows:
    var dragData = window.event.dataTransfer;

    // set the type of data for the clipboard:
    dragData.setData('Text', window.event.srcElement.src);

    // allow only dragging that involves moving the object:
    dragData.effectAllowed = 'linkMove';

    // use the special 'move' cursor when dragging:
    dragData.dropEffect = 'move';
}

function enterDrag() {
    // allow target object to read clipboard:
    window.event.dataTransfer.getData('Text');
   
}

function endDrag() {
    // when done remove clipboard data
    window.event.dataTransfer.clearData();
}

function overDrag() {
    // tell onOverDrag handler not to do anything:
    window.event.returnValue = false;
}

function drop(mitlag) {
    // eliminate default action of ondrop so we can customize:
    window.event.returnValue = false;

    // change shopping cart message:
    productBarStatus.innerHTML = srcObj.myLabel + ' blev droppet på ' + mitlag;

}

// since we aren't working with an actual object, we will add our attributes manually:
function addAttribute(oObj, sVal) {
    var loc = oObj.indexOf(">");
    return oObj.substring(0, loc) + ' ' + sVal + '>';
}
//--></script>

</head>

<body>


<span id="lag1" style="background-color: black;width:100px; height:100px;" ondrop="drop('lag1')" ondragover="overDrag()" ondragenter="enterDrag()"><img src="../sortering1.gif" ondragstart="startDrag()" ondragend="endDrag()" myLabel="lag1" border="1" width="100" height="10"></span><br>
<span id="lag2" style="background-color: green;width:100px; height:100px;" ondrop="drop('lag2')" ondragover="overDrag()" ondragenter="enterDrag()"><img src="../sortering1.gif" ondragstart="startDrag()" ondragend="endDrag()" myLabel="lag2" border="1" width="100" height="10"></span><br>
<span id="lag3" style="background-color: navy;width:100px; height:100px;" ondrop="drop('lag3')" ondragover="overDrag()" ondragenter="enterDrag()"><img src="../sortering1.gif" ondragstart="startDrag()" ondragend="endDrag()" myLabel="lag3" border="1" width="100" height="10"></span><br>
<br><br>



<!------------------------------------PRODUCT BAR STATUS-------------------->

<div id="productBarStatus" style="font-family:arial; font-size:9pt">Drag Items Into Shopping Cart. Works in IE 5.0 only.</div>

</body>
</html>
Avatar billede roenving Novice
15. august 2003 - 14:17 #12
Så skal du måske over i kagebageriet ?-)
Avatar billede roenving Novice
15. august 2003 - 14:17 #13
-- og ja, det ser fint ud !-)
Avatar billede bingokaj Nybegynder
15. august 2003 - 14:47 #14
det eneste der er irriterende er, at man ikke trækker selve laget men et billede i laget i stedet for...
Avatar billede bingokaj Nybegynder
15. august 2003 - 14:47 #15
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester