Avatar billede mitbrugernavn Praktikant
09. november 2007 - 16:39 Der er 6 kommentarer og
1 løsning

drag and drop indenfor afsat x og y

Hej

Har følgende script som skal aflæse kordinaterne for drop - men er der nogen java hajer der kan tilrette det således at der kun kan laves drag and drop inden for f.eks. det nedeste lag. eller 200 px fra left and top.

Og evt. få det til at virke i firefox
Avatar billede mitbrugernavn Praktikant
09. november 2007 - 16:40 #1
ups glemte scriptet

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style>

<!--
.drag{
    position:relative;
    cursor:hand;
    background-image: url(../image_site/trans.gif);
}
-->
</style>
<script language="JavaScript1.2">
<!--
var ns4 = (document.layers)? true:false
var ie4 = (document.all && !document.getElementById)? true:false
var ie5 =(document.getElementById)? true:false
var ns6 = (document.getElementById && !document.all)?true:false;
var ns7 = (document.getElementById && !document.all)?true:false;

var clicked = true;
var forrige = "none";
var opdaterDu = false;
minimumZindex = 10;

var dragapproved=false
var z,x,y


function move(){
if (event.button==1&&dragapproved){
z.style.pixelLeft=temp1+event.clientX-x
z.style.pixelTop=temp2+event.clientY-y

return false
}
}
function drags(){
if (!document.all)
return
if (event.srcElement.className=="drag"){
dragapproved=true
z=event.srcElement
temp1=z.style.pixelLeft
temp2=z.style.pixelTop


x=event.clientX
y=event.clientY
document.onmousemove=move
}
}
document.onmousedown=drags
document.onmouseup=new Function("dragapproved=false")

function drag_images(){
hvorX = document.getElementById('drag_images').offsetLeft
hvorY = document.getElementById('drag_images').offsetTop


window.location = "?l=" + hvorX + "&t="+ hvorY
t = hvorY
l = hvorX
}


//-->
</script>
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);
//-->
</script>
</head>

<body>
<%

if request("t") = "" then
session("t") = 10
else
t = request("t")
end if
if request("l") = "" then
session("l") = 10
else
l = request("l")
end if


session("t") = int(t) + int(session("t"))
session("l") = int(l) + int(session("l"))
%>
<div id="Layer2" style="position:absolute; width:50px; height:50px; z-index:4; left: <%=session("l")%>px; top: <%=session("t")%>px;visibility: visible;">
  <a href="java script:drag_images()">
  <div id="drag_images" class="drag" style="left:0; top:0; border-width:2; border-style:solid; border-color:black; width:50; height:50; position:absolute;">test</div>
</a>
</div>


<div id="ikke_overskride" style="position:absolute; width:200px; height:200px; z-index:3; background-color: #993300; layer-background-color: #993300; border: 1px none #000000; visibility: visible;"></div>
</body>
</html>
Avatar billede roenving Novice
09. november 2007 - 16:45 #2
Har ik' li'e gennemskuet dit script, men prøv at se på en af de ældre ting fra eksperten, nemlig =maddog=s DragManager: http://eksperten.dk/spm/385198 !-)
Avatar billede mitbrugernavn Praktikant
09. november 2007 - 17:33 #3
tak for linket - har rettet det lidt til - da jeg kun skal bruge den hvor det er på et afgrænset felt.

problemet er at jeg nu skal have siden genindlæst når brugeren slipper for at få x og y kordinaterne vist - kan du hjælpe med det ???

her er det tilrettede script

<html>
<head>
<title>=maddog=s dragmanager</title>
<style type="text/css">
div {
    position:relative;
    cursor:default;
    background-color: #CCCCCC;
   
}

</style>
<script type="text/javascript">
if  (window.Node) {
    // Moz extensions
    Event.prototype.__defineGetter__("clientX", function() { return this.pageX; } );
    Event.prototype.__defineGetter__("clientY", function() { return this.pageY; } );
    Event.prototype.__defineGetter__("offsetX", function () { return this.layerX; } );
    Event.prototype.__defineGetter__("offsetY", function () { return this.layerY; } );
    Event.prototype.__defineGetter__("srcElement", function () {
        var node = this.target;
        while (node.nodeType != 1) node = node.parentNode;
        return node;
    });
}

function DragManager() {
    this.registeredElements = new Array();
   
    this.register = function(element) {
        // see if any removed element slots are available
        for (i=0;i!=this.registeredElements.length;i++) {
            if(this.registeredElements[i]==null) {
                this.registeredElements[i]=element;
                return;
            }
        }
        // Otherwise expand the register by one
        this.registeredElements[this.registeredElements.length]=element;
        // update
        this.update();
        // mark the element so we don't register twice
        element.markedForDrag = true;
    }
    this.remove = function(element) {
        // locate and remove the element if present.
        for (i=0;i!=this.registeredElements.length;i++) {
            if(this.registeredElements[i]==element)
                this.registeredElements[i]=null;
        }
        this.update();
        // demark the element
        element.markedForDrag = false;
    }
    this.grabElement = function(e) {
        // See if the source is registered and select if so
        if(e)event=e;
        for (i=0;i!=this.registeredElements.length;i++) {
            if(this.registeredElements[i]==event.srcElement) {
                this.selected=event.srcElement;
                break;
            }
        }
        if (this.selected!=null) {
            this.selected = (this.selected.proxy)?this.selected.proxy:this.selected;
            this.selected.style.zIndex = this.zIndex++;
            this.offsetX = event.clientX-(isNaN(parseInt(this.selected.style.left))?0:parseInt(this.selected.style.left));
            this.offsetY = event.clientY-(isNaN(parseInt(this.selected.style.top))?0:parseInt(this.selected.style.top));
            if (this.selected.invokeOnGrab!=null)
              this.selected.invokeOnGrab(event);
        }
    }
    this.dragElement = function(e) {
        if(e)event=e;
        if(this.selected) {
            if(this.selected.isAnchored) return;
            theoreticalLeft = event.clientX-this.offsetX;
            theoreticalTop = event.clientY-this.offsetY;
            if(!this.selected.verticalLock) {
                if (this.selected.topBound!=null||this.selected.topBound==0)
                  theoreticalTop=(theoreticalTop<this.selected.topBound)?this.selected.topBound:theoreticalTop;
                if (this.selected.bottomBound!=null||this.selected.bottomBound==0)
                    theoreticalTop=(theoreticalTop>this.selected.bottomBound)?this.selected.bottomBound:theoreticalTop;
                this.selected.style.top = theoreticalTop+"px";
                if (this.selected.invokeOnMove)
                  this.selected.invokeOnMove(event);
            }

            if(!this.selected.horizontalLock) {
                if (this.selected.leftBound||this.selected.leftBound==0)
                  theoreticalLeft=(theoreticalLeft<this.selected.leftBound)?this.selected.leftBound:theoreticalLeft;
                if (this.selected.rightBound||this.selected.rightBound==0)
                    theoreticalLeft=(theoreticalLeft>this.selected.rightBound)?this.selected.rightBound:theoreticalLeft;
                this.selected.style.left = theoreticalLeft+"px";
                if (this.selected.invokeOnMove)
                  this.selected.invokeOnMove(event);
            }

        }
        return false; // avoid event propagation downwards.
    }
    this.releaseElement = function(e) {
        if(e)event=e;
        if(this.selected) {
            if (this.selected.invokeOnRelease)
                this.selected.invokeOnRelease(event);
            this.selected=null;
        }
           
    }
}
DragManager.prototype.init = function() {
    if (!window.Element) {
        document.zIndex = 0;                     
        document.onmousedown = this.grabElement;
        document.onmousemove = this.dragElement;
        document.onmouseup = this.releaseElement;
        this.owner = document;
    } else {
        window.zIndex = 0;                     
        window.onmousedown = this.grabElement;
        window.onmousemove = this.dragElement;
        window.onmouseup = this.releaseElement;
        this.owner = window
    }
}
DragManager.prototype.update = function() {
    if (!window.Element) {
        document.registeredElements = this.registeredElements;
    } else {
        window.registeredElements = this.registeredElements;
    }
}   

onload = function() {
    // DragManager tilbyder en masse drag funktionalitet.
    // Først skal vi oprette en DragManager. Der bør være en DragManager pr. window/document object
    // selvom den i princippet kan afregistreres og registrere sig i en iframe.
    myDrag = new DragManager();
    myDrag.init(); // binder den til document (for IE) eller window (for NS)
    // Goody. Lad os få fingre i en div at lege med

   
    // Nogle gange er det nødvendigt at layers kun kan flyttes inden for et afgrænset område. Det gør vi ved at erklære
    // følgende varible: topBound, bottomBound, leftBound og rightBound.
    // Det er et vidunder til virtuelle scrollbars.
    myObj = document.getElementById("Nr4");
    myObj.leftBound = 0;  // kan ikke flyttes mere end 0 pixels til venstre
    myObj.rightBound = 300;  // kan ikke flyttes mere end 300 pixels til højre
    myObj.topBound = 0;  // kan ikke flyttes mere end 0 pixels til op
    myObj.bottomBound = 300; // ken ikke flyttes mere end 300 pixels nedad
    myDrag.register(myObj);
   

    myDrag.register(myObj);
}
</script>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head>

<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<div id="Nr4" style="position:absolute; width:100px; height:50px; z-index:4">En
  Div, der ikke kan slippe væk</div>


<table width="400" height="350" border="1" cellpadding="0" cellspacing="0">
  <tr>
    <td>&nbsp;</td>
  </tr>
</table>
</body>
</html>
Avatar billede roenving Novice
10. november 2007 - 13:27 #4
Ikke forstået ?-)
Avatar billede mitbrugernavn Praktikant
11. november 2007 - 10:35 #5
jeg har fundet en løsning på det - men smid et svar som tak for at du forsøgte at hjælpe ;-)))
Avatar billede roenving Novice
12. november 2007 - 13:42 #6
Velbekomme '-)
Avatar billede roenving Novice
15. november 2007 - 00:28 #7
-- og tak for point ;~}
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