14. august 2003 - 14:52Der 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.
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
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>
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.