PSD-Tutorials.de
Forum für Design, Fotografie & Bildbearbeitung
Tutkit
Agentur
Hilfe
Kontakt
Start
Forum
Aktuelles
Besonderer Inhalt
Foren durchsuchen
Tutorials
News
Anmelden
Kostenlos registrieren
Aktuelles
Suche
Suche
Nur Titel durchsuchen
Von:
Menü
Anmelden
Kostenlos registrieren
App installieren
Installieren
JavaScript ist deaktiviert. Für eine bessere Darstellung aktiviere bitte JavaScript in deinem Browser, bevor du fortfährst.
Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder einen
alternativen Browser
verwenden.
Antworten auf deine Fragen:
Neues Thema erstellen
Start
Forum
Sonstiges
Webdesign, Webentwicklung & Programmierung
PHP, Javascript, jQuery, Ajax, nodeJS, MySQL...
HTML5 Drag + Drop
Beitrag
<blockquote data-quote="Schippo" data-source="post: 2533382" data-attributes="member: 707412"><p>sorry, ich werde es künftig berücksichtigen.</p><p></p><p>hier der korrekte code:</p><p></p><p>[html]<html></p><p><head></p><p><title></title></p><p><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"></p><p><style type="text/css"></p><p> <!--</p><p>* { margin: 0 auto; padding: 0;}</p><p>body{ padding: 24px;}</p><p></p><p>#dragBereich{</p><p> width: 880px;</p><p> height: 500px;</p><p> border: none</p><p> background: #272727;</p><p> position: relative;}</p><p></p><p>#id_0{</p><p> float: left;</p><p> width: 68px;</p><p> height:180px;</p><p> margin-left: 20px;}</p><p>//--></p><p></style></p><p></p><p><script type="text/javascript"></p><p> <!--</p><p>// IDs der verschiebbaren IDs eintragen</p><p>var arrDragIDs = new Array("id_0");</p><p></p><p>function Drag(strID){</p><p> this.strDragClassName = "drag-el"; // Klassenname für Drag-Elemente</p><p> // Alle Elemente, die damit ausgezeichnet sind, werden</p><p> // als Drag-Elemente erkannt (z.B. class="class1 drag-el"</p><p></p><p> this.id = strID;</p><p> this.dragElem = document.getElementById(this.id);</p><p></p><p> this.intMouseX, this.intMouseY; // Koordinaten des Cursors</p><p> this.intOffsetX, this.intOffsetY; // Offset im Drag-Objekt</p><p></p><p> this.intStartX, this.intStartY; // Startkoordinaten zur Grössenberechnung (Skalierung)</p><p> this.intStartWidth, this.intStartHeight; // Startgrösse des Skalierobjektes</p><p> this.intMinScale = 10; // Minimale Skaliergrösse</p><p></p><p> this.blnStrg = false; // Variable zum Testen, ob Strg gedrückt gehalten wird</p><p></p><p> this.arrDragElems = new Array();</p><p></p><p> // Dragobjekt</p><p> this.m_objDrag = null;</p><p> // Overobjekt</p><p> this.m_objOver = null;</p><p></p><p> // Closure-Variable</p><p> objThis = this;</p><p></p><p></p><p> this.getEvent = function(objEvt){</p><p> return (window.event)? window.event : objEvt; // Passendes Event-Objekt zurückgeben</p><p> }</p><p></p><p></p><p> this.mousePos = function(objEvt){</p><p></p><p> if(window.event){</p><p> //objThis.intMouseX = window.event.clientX;</p><p> objThis.intMouseX = objThis.getEvent(objEvt).clientX;</p><p> objThis.intMouseY = objThis.getEvent(objEvt).clientY;</p><p> }else{</p><p> objThis.intMouseX = objThis.getEvent(objEvt).pageX;</p><p> objThis.intMouseY = objThis.getEvent(objEvt).pageY;</p><p> }</p><p></p><p> //document.getElementById("outID1").innerHTML = "Mouse: " + objThis.intMouseX + ", " + objThis.intMouseY;</p><p></p><p> // Falls ein Dragobjekt existiert</p><p> if(objThis.m_objDrag != null){</p><p> // Falls nicht die Strg-Taste gedrückt wird</p><p> if(!objThis.blnStrg){</p><p> // Koordinaten der linken oberen Ecke</p><p> var intX = (objThis.intMouseX - objThis.intOffsetX);</p><p> var intY = (objThis.intMouseY - objThis.intOffsetY);</p><p></p><p> // Falls das Drag-Objekt nach links hinausgeschoben wird</p><p> if(intX < 0){</p><p> objThis.m_objDrag.style.left = 0+"px";</p><p> // Falls das Drag-Objekt nach rechts hinausgeschoben wird</p><p> }else if(intX > (objThis.dragElem.offsetWidth - objThis.m_objDrag.offsetWidth)){</p><p> objThis.m_objDrag.style.left = (objThis.dragElem.offsetWidth - objThis.m_objDrag.offsetWidth) + "px";</p><p> // sonst</p><p> }else{</p><p> objThis.m_objDrag.style.left = intX + "px";</p><p> }</p><p></p><p> // Falls das Drag-Objekt nach oben hinausgeschoben wird</p><p> if(intY < 0){</p><p> objThis.m_objDrag.style.top = 0+"px";</p><p> // Falls das Drag-Objekt nach unten hinausgeschoben wird</p><p> }else if(intY > objThis.dragElem.offsetHeight - objThis.m_objDrag.offsetHeight){</p><p> objThis.m_objDrag.style.top = (objThis.dragElem.offsetHeight - objThis.m_objDrag.offsetHeight) + "px";</p><p> // sonst</p><p> }else{</p><p> objThis.m_objDrag.style.top = intY + "px";</p><p> }</p><p> // Falls die Strg-Taste gedrückt wird</p><p> }else{</p><p> objThis.m_objDrag.style.cursor = "se-resize";</p><p> // Aktuelle Grössenänderung berechnen</p><p> var intHelpX = objThis.intMouseX - objThis.intStartX;</p><p> var intHelpY = objThis.intMouseY - objThis.intStartY;</p><p></p><p> //document.getElementById("outID2").innerHTML = "new width, new height: " + (objThis.intStartWidth+intHelpX) + ", " + (objThis.intStartHeight+intHelpY);</p><p></p><p> objThis.m_objDrag.style.width = (((objThis.intStartWidth+intHelpX)<objThis.intMinScale)? objThis.intMinScale : (objThis.intStartWidth+intHelpX)) + "px";</p><p> objThis.m_objDrag.style.height = (((objThis.intStartHeight+intHelpY)<objThis.intMinScale)? objThis.intMinScale : (objThis.intStartHeight+intHelpY)) + "px";</p><p> } // ENDE - if(!objThis.blnStrg)</p><p> } // ENDE - if(objThis.m_objDrag != null)</p><p></p><p> }</p><p></p><p></p><p> this.startDrag = function(objEvt){</p><p> var objSrc = (window.event)? ((window.opera)?window.event.target:window.event.srcElement) : (objEvt.target);</p><p></p><p> // Startpositionen speichern</p><p> objThis.intStartX = objThis.intMouseX;</p><p> objThis.intStartY = objThis.intMouseY;</p><p> // Startgrösse speichern</p><p> objThis.intStartWidth = objSrc.offsetWidth;</p><p> objThis.intStartHeight = objSrc.offsetHeight;</p><p></p><p> // Offsets zur linken oberen Ecke bstimmen</p><p> objThis.intOffsetX = objThis.intMouseX - objSrc.offsetLeft;</p><p> objThis.intOffsetY = objThis.intMouseY - objSrc.offsetTop;</p><p> // Globales Dragobjekt</p><p> objThis.m_objDrag = objSrc;</p><p> }</p><p></p><p></p><p> this.stopDrag = function(){</p><p> if(objThis.m_objDrag == null) return;</p><p></p><p> // Cookie mit ID des Drag-Objektes als Name und die zugehörigen Positionswerte schreiben</p><p> Cookie.setCookie(objThis.m_objDrag.id, parseInt(objThis.m_objDrag.style.top)+"###"+parseInt(objThis.m_objDrag.style.left)+"###"+parseInt(objThis.m_objDrag.style.width)+"###"+parseInt(objThis.m_objDrag.style.height), (1000*60*60*24*365));</p><p> // Cursor zurücksetzen</p><p> objThis.m_objDrag.style.cursor = "default";</p><p> // Drag-Objekt zerstören</p><p> objThis.m_objDrag = null;</p><p> }</p><p></p><p> // Funktion zum Setzen des Resize-Cursors</p><p> this.setCursor = function(objCursor){</p><p> // Falls die Strg-Taste gedrückt gehalten wird</p><p> if(objThis.blnStrg){</p><p> objCursor.style.cursor = "se-resize";</p><p> }</p><p> // Over-Objekt speichern</p><p> objThis.m_objOver = objCursor;</p><p> }</p><p></p><p> // Funktion für MouseOut-Event</p><p> this.clearCursor = function(objCursor){</p><p> // Cursor zurücksetzen</p><p> objCursor.style.cursor = "default";</p><p> // Over-Objekt zurücksetzen</p><p> objThis.m_objOver = null;</p><p> }</p><p></p><p> this.checkStrg = function(objEvt){</p><p> objEvt = (window.event)? window.event : objEvt;</p><p> var intKeyCode = (objEvt.keyCode)? objEvt.keyCode : objEvt.which;</p><p></p><p> if(intKeyCode == 17){</p><p> objThis.blnStrg = true;</p><p></p><p> // Falls sich der Cursor bereits über einem Dragobjekt befindet (d.h. es existiert ein Over-Objekt)</p><p> if(objThis.m_objOver != null)</p><p> objThis.setCursor(objThis.m_objOver);</p><p> }</p><p> }</p><p></p><p> this.releaseStrg = function(objEvt){</p><p> objEvt = (window.event)? window.event : objEvt;</p><p></p><p> var intKeyCode = (objEvt.keyCode)? objEvt.keyCode : objEvt.which;</p><p></p><p> if(intKeyCode == 17){</p><p> objThis.blnStrg = false;</p><p></p><p> // Falls sich der Cursor bereits über einem Dragobjekt befindet</p><p> if(objThis.m_objOver != null)</p><p> objThis.m_objOver.style.cursor = "default";</p><p> }</p><p> }</p><p></p><p></p><p> this.getElementsByClassName = function(strClassName){</p><p> var arrHelp = new Array();</p><p></p><p> // Suchpattern</p><p> var strPattern = eval("/"+strClassName+"/");</p><p></p><p> // Alle Elemente über Wildcard ermitteln</p><p> var arrTags = (navigator.userAgent.toLowerCase().indexOf("msie") != -1) ? document.all : document.getElementsByTagName('*');</p><p></p><p> // Alle Elemente durchlaufen</p><p> for(var varEntry in arrTags){</p><p> // Falls eine Klasse existiert UND dem Suchkriterium entspricht</p><p> if((arrTags[varEntry].className) && (arrTags[varEntry].className.match(strPattern))){</p><p> // In Klassenarray schreiben</p><p> //objThis.arrDragElems[objThis.arrDragElems.length] = arrTags[varEntry];</p><p> arrHelp[arrHelp.length] = arrTags[varEntry];</p><p> }</p><p> }</p><p></p><p> return arrHelp;</p><p> }</p><p></p><p></p><p> // Drag-Elemente initialisieren (d.h. die notwendigen Event-Handler zufügen)</p><p> this.init = function(){</p><p> // Array der Drag-Elemente anhand einer eindeutigen Klasse ermitteln</p><p> objThis.arrDragElems = objThis.getElementsByClassName(objThis.strDragClassName);</p><p></p><p> // Alle Drag-Elemente durchlaufen und die erforderlichen Eventhandler zuweisen</p><p> for(var i=0; i<objThis.arrDragElems.length; i++){</p><p> //objThis.arrDragElems[i].onmousedown = function(event){ objThis.startDrag(event);};</p><p> objThis.arrDragElems[i].onmousedown = objThis.startDrag;</p><p> objThis.arrDragElems[i].onmouseup = objThis.stopDrag;</p><p> objThis.arrDragElems[i].onmouseover = function(){objThis.setCursor(this);};</p><p> objThis.arrDragElems[i].onmouseout = function(){objThis.clearCursor(this);};</p><p> }</p><p> }</p><p></p><p> this.init();</p><p></p><p> // ++++++ TESTFUNKTIONEN ++++++</p><p> this.testFunc = function(){</p><p> if(this.blnStrg)</p><p> alert("Mit Steuerung");</p><p> else</p><p> alert("Ohne Steuerung");</p><p> }</p><p>}</p><p></p><p>window.onload = function(){</p><p> objDrag = new Drag("dragBereich"); // Neues Drag-/Resizeobjekt mit der ID des Bereichs erstellen</p><p></p><p> document.onmousemove = objDrag.mousePos;</p><p></p><p> document.onmouseup = objDrag.stopDrag;</p><p></p><p> document.onkeydown = objDrag.checkStrg;</p><p> document.onkeyup = objDrag.releaseStrg;</p><p></p><p> // Falls Cookies erlaubt sind</p><p> if(Cookie.checkCookie() != false){</p><p> // Array mit den IDs für die DragElemente durchlaufen</p><p> for(var i=0; i<arrDragIDs.length; i++){</p><p> // Cookie zu ID auslesen</p><p> var strCookie = Cookie.getCookie(arrDragIDs[i]);</p><p> // Falls ein Cookie zur ID existiert -> Element positionieren</p><p> if(strCookie != null){</p><p> var arrHelp = strCookie.split("###");</p><p> if(document.getElementById(arrDragIDs[i])){</p><p> document.getElementById(arrDragIDs[i]).style.top = arrHelp[0] + "px";</p><p> document.getElementById(arrDragIDs[i]).style.left = arrHelp[1] + "px";</p><p> document.getElementById(arrDragIDs[i]).style.width = arrHelp[2] + "px";</p><p> document.getElementById(arrDragIDs[i]).style.height = arrHelp[3] + "px";</p><p> }</p><p> }</p><p> }</p><p> }</p><p>}</p><p></p><p></p><p></p><p>var Cookie = {</p><p>/* *********************** Funktion zum Setzen eines Cookies *************************** *</p><p>* Parameter: *</p><p>* strName - Bezeichnung für die Cookievariable *</p><p>* varWert - Wert, welcher der Cookievariablen zugewiesen werden soll *</p><p>* longExpires - Gültigkeitsdauer des Cookies in Millisekunden *</p><p>* strDomain - optional, zugehörige Domain *</p><p>* strPath - optional, zugehöriger Pfad *</p><p>* boolSecure - optional, Sicherheitsrichtlinien für den Cookie aktivieren (true/false) *</p><p>* ************************************************************************************* */</p><p> setCookie: function(strName, varWert, longExpires, strDomain, strPath, boolSecure){</p><p> // Datumsobjekt mit aktuellen Werten anlegen</p><p> var dateExpires = new Date();</p><p> // Zeitpunkt der Ungültigkeit des Cookies berechnen</p><p> dateExpires = new Date(dateExpires.getTime() + longExpires);</p><p> // In gültiges Datum umwandeln</p><p> dateExpires.setTime(dateExpires);</p><p> // Datum in GMT-String umwandeln</p><p> dateExpires = dateExpires.toGMTString();</p><p></p><p> // Cookie-Variable anlegen</p><p> var strCookie = strName + "=" + unescape(varWert);</p><p> strCookie += (strDomain) ? "; domain=" + strDomain : "";</p><p> strCookie += (longExpires) ? "; expires=" + dateExpires : "";</p><p> strCookie += (strPath) ? "; path=" + strPath : "";</p><p> strCookie += (boolSecure) ? "; secure" : "";</p><p> document.cookie = strCookie;</p><p> },</p><p></p><p>/* ******************* Löschen eines Cookies ******************** *</p><p>* Parameter: *</p><p>* strName - Name der Cookievariablen, die gelöscht werden soll *</p><p>* strDomain - optional; zugehörige Domain *</p><p>* strPfad - optional; zugehöriger Pfad *</p><p>* ************************************************************** */</p><p> eraseCookie: function(strName, strDomain, strPath){</p><p> // Datumsobjekt instanziieren, das in der Vergangenheit liegt (01.01.1970, 00:00:01 Uhr)</p><p> var dateExpires = new Date(1970, 0, 1, 0, 0, 1);</p><p> // Datum in GMT-String umwandeln</p><p> dateExpires = dateExpires.toGMTString();</p><p></p><p> // Cookie ein Datum in der Vergangenheit zuweisen</p><p> var strCookie = strName + "=; expires="+dateExpires;</p><p> strCookie += (strDomain) ? "; domain=" + strDomain : "";</p><p> strCookie += (strPath) ? "; path=" + strPath : "";</p><p> document.cookie = strCookie;</p><p> },</p><p></p><p>/* ********************* Cookie auslesen *********************************** *</p><p>* Der Wert zur Variablen strName wird zurückgegeben *</p><p>* Parameter: strName - Name der Variablen, deren Wert ermittelt werden soll *</p><p>* ************************************************************************* */</p><p> getCookie: function(strName){</p><p> var i = 0 //Suchposition im Cookie</p><p> var strSuche = strName + "=";</p><p></p><p> // Solange das Ende des CookieStrings noch nicht erreicht wurde</p><p> while(i < document.cookie.length){</p><p> // Falls der Name des Cookies gefunden wurde</p><p> if (document.cookie.substring(i, i+strSuche.length) == strSuche){</p><p> // Suche nach dem ersten Semikolon ab dem Auftreten des Cookie-Namens</p><p> var intEnde = document.cookie.indexOf(";", i+strSuche.length);</p><p> // Stringlänge des Cookie-Wertes ermitteln</p><p> intEnde = (intEnde > -1) ? intEnde : document.cookie.length;</p><p> // Cookie-Wert auslesen</p><p> var strCookie = document.cookie.substring(i+strSuche.length, intEnde);</p><p> // Zeichen aus der URL-Schreibweise wieder zurückwandeln und zurückgeben</p><p> return unescape(strCookie);</p><p> }</p><p> // Position im Cookie-String inkrementieren</p><p> i++;</p><p> }</p><p> return null;</p><p> },</p><p></p><p>/* ********************* Cookie auslesen *********************************** *</p><p>* Die Funktion verwendet zum Ermitteln der Cookievarialben reluläre Aus- *</p><p>* drücke. *</p><p>* *</p><p>* Der Wert zur Variablen strName wird zurückgegeben *</p><p>* Parameter: strName - Name der Variablen, deren Wert ermittelt werden soll *</p><p>* ************************************************************************* */</p><p> getCookie_: function(strName){</p><p> var strCookie</p><p> var strValue = false;</p><p></p><p> // Falls Cookies unterstützt werden</p><p> if(strCookie = document.cookie){</p><p> // Falls ein Cookie gefunden wird</p><p> // Im RegExp wird jedes Zeichen übernommen, das KEIN Semikolon ist</p><p> // RegExp wird mit zwei Parametern aufgerufen - der zweite bedeutet GLOBALE Suche</p><p> // (mgl. wäre z.B. auch 'ig', global und ohne Beachtung von Gross-/Kleinschreibung)</p><p> if(strCookie.match( new RegExp(strName + '=([^;]*)', 'g'))){</p><p> strValue = RegExp.$1;</p><p> return unescape(strValue);</p><p> }</p><p> }</p><p> return null;</p><p> },</p><p></p><p>/* ************* Testen, ob Browser Cookies zulässt *********************** *</p><p>* Rückgabe: true, falls Unterstützung von Cookies, false sonst *</p><p>* ************************************************************************ */</p><p> checkCookie: function(){</p><p> // Versuch, einen Cookie zu setzen</p><p> this.setCookie("CookieTest", "OK");</p><p> // Falls der Cookie nicht gesetzt werden konnte</p><p> if (!this.getCookie("CookieTest"))</p><p> return false;</p><p> else{</p><p> this.eraseCookie("CookieTest"); // Cookie wieder löschen</p><p> return true;</p><p> }</p><p> },</p><p></p><p> // Falls Cookies nicht erlaubt sind</p><p>// if(checkCookie() == false) alert("Keine Cookies unterstützt");</p><p></p><p> isCookie: function(){</p><p> if(document.cookie)</p><p> document.getElementById("cookieID").firstChild.data = document.cookie;</p><p> }</p><p>}</p><p>//--></p><p></script></p><p></head></p><p><body></p><p></p><p><div id="outID1">&nbsp;</div></p><p><div id="outID2">&nbsp;</div></p><p></p><p><div id="dragBereich"></p><p><img class="class1 drag-el" id="id_0" src="http://www.4-w&auml;nde.de/hpfixseparat_blumenkerze_2.gif"/></div></p><p></div></p><p></body></p><p></html>[/html]</p></blockquote><p></p>
[QUOTE="Schippo, post: 2533382, member: 707412"] sorry, ich werde es künftig berücksichtigen. hier der korrekte code: [html]<html> <head> <title></title> <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> <style type="text/css"> <!-- * { margin: 0 auto; padding: 0;} body{ padding: 24px;} #dragBereich{ width: 880px; height: 500px; border: none background: #272727; position: relative;} #id_0{ float: left; width: 68px; height:180px; margin-left: 20px;} //--> </style> <script type="text/javascript"> <!-- // IDs der verschiebbaren IDs eintragen var arrDragIDs = new Array("id_0"); function Drag(strID){ this.strDragClassName = "drag-el"; // Klassenname für Drag-Elemente // Alle Elemente, die damit ausgezeichnet sind, werden // als Drag-Elemente erkannt (z.B. class="class1 drag-el" this.id = strID; this.dragElem = document.getElementById(this.id); this.intMouseX, this.intMouseY; // Koordinaten des Cursors this.intOffsetX, this.intOffsetY; // Offset im Drag-Objekt this.intStartX, this.intStartY; // Startkoordinaten zur Grössenberechnung (Skalierung) this.intStartWidth, this.intStartHeight; // Startgrösse des Skalierobjektes this.intMinScale = 10; // Minimale Skaliergrösse this.blnStrg = false; // Variable zum Testen, ob Strg gedrückt gehalten wird this.arrDragElems = new Array(); // Dragobjekt this.m_objDrag = null; // Overobjekt this.m_objOver = null; // Closure-Variable objThis = this; this.getEvent = function(objEvt){ return (window.event)? window.event : objEvt; // Passendes Event-Objekt zurückgeben } this.mousePos = function(objEvt){ if(window.event){ //objThis.intMouseX = window.event.clientX; objThis.intMouseX = objThis.getEvent(objEvt).clientX; objThis.intMouseY = objThis.getEvent(objEvt).clientY; }else{ objThis.intMouseX = objThis.getEvent(objEvt).pageX; objThis.intMouseY = objThis.getEvent(objEvt).pageY; } //document.getElementById("outID1").innerHTML = "Mouse: " + objThis.intMouseX + ", " + objThis.intMouseY; // Falls ein Dragobjekt existiert if(objThis.m_objDrag != null){ // Falls nicht die Strg-Taste gedrückt wird if(!objThis.blnStrg){ // Koordinaten der linken oberen Ecke var intX = (objThis.intMouseX - objThis.intOffsetX); var intY = (objThis.intMouseY - objThis.intOffsetY); // Falls das Drag-Objekt nach links hinausgeschoben wird if(intX < 0){ objThis.m_objDrag.style.left = 0+"px"; // Falls das Drag-Objekt nach rechts hinausgeschoben wird }else if(intX > (objThis.dragElem.offsetWidth - objThis.m_objDrag.offsetWidth)){ objThis.m_objDrag.style.left = (objThis.dragElem.offsetWidth - objThis.m_objDrag.offsetWidth) + "px"; // sonst }else{ objThis.m_objDrag.style.left = intX + "px"; } // Falls das Drag-Objekt nach oben hinausgeschoben wird if(intY < 0){ objThis.m_objDrag.style.top = 0+"px"; // Falls das Drag-Objekt nach unten hinausgeschoben wird }else if(intY > objThis.dragElem.offsetHeight - objThis.m_objDrag.offsetHeight){ objThis.m_objDrag.style.top = (objThis.dragElem.offsetHeight - objThis.m_objDrag.offsetHeight) + "px"; // sonst }else{ objThis.m_objDrag.style.top = intY + "px"; } // Falls die Strg-Taste gedrückt wird }else{ objThis.m_objDrag.style.cursor = "se-resize"; // Aktuelle Grössenänderung berechnen var intHelpX = objThis.intMouseX - objThis.intStartX; var intHelpY = objThis.intMouseY - objThis.intStartY; //document.getElementById("outID2").innerHTML = "new width, new height: " + (objThis.intStartWidth+intHelpX) + ", " + (objThis.intStartHeight+intHelpY); objThis.m_objDrag.style.width = (((objThis.intStartWidth+intHelpX)<objThis.intMinScale)? objThis.intMinScale : (objThis.intStartWidth+intHelpX)) + "px"; objThis.m_objDrag.style.height = (((objThis.intStartHeight+intHelpY)<objThis.intMinScale)? objThis.intMinScale : (objThis.intStartHeight+intHelpY)) + "px"; } // ENDE - if(!objThis.blnStrg) } // ENDE - if(objThis.m_objDrag != null) } this.startDrag = function(objEvt){ var objSrc = (window.event)? ((window.opera)?window.event.target:window.event.srcElement) : (objEvt.target); // Startpositionen speichern objThis.intStartX = objThis.intMouseX; objThis.intStartY = objThis.intMouseY; // Startgrösse speichern objThis.intStartWidth = objSrc.offsetWidth; objThis.intStartHeight = objSrc.offsetHeight; // Offsets zur linken oberen Ecke bstimmen objThis.intOffsetX = objThis.intMouseX - objSrc.offsetLeft; objThis.intOffsetY = objThis.intMouseY - objSrc.offsetTop; // Globales Dragobjekt objThis.m_objDrag = objSrc; } this.stopDrag = function(){ if(objThis.m_objDrag == null) return; // Cookie mit ID des Drag-Objektes als Name und die zugehörigen Positionswerte schreiben Cookie.setCookie(objThis.m_objDrag.id, parseInt(objThis.m_objDrag.style.top)+"###"+parseInt(objThis.m_objDrag.style.left)+"###"+parseInt(objThis.m_objDrag.style.width)+"###"+parseInt(objThis.m_objDrag.style.height), (1000*60*60*24*365)); // Cursor zurücksetzen objThis.m_objDrag.style.cursor = "default"; // Drag-Objekt zerstören objThis.m_objDrag = null; } // Funktion zum Setzen des Resize-Cursors this.setCursor = function(objCursor){ // Falls die Strg-Taste gedrückt gehalten wird if(objThis.blnStrg){ objCursor.style.cursor = "se-resize"; } // Over-Objekt speichern objThis.m_objOver = objCursor; } // Funktion für MouseOut-Event this.clearCursor = function(objCursor){ // Cursor zurücksetzen objCursor.style.cursor = "default"; // Over-Objekt zurücksetzen objThis.m_objOver = null; } this.checkStrg = function(objEvt){ objEvt = (window.event)? window.event : objEvt; var intKeyCode = (objEvt.keyCode)? objEvt.keyCode : objEvt.which; if(intKeyCode == 17){ objThis.blnStrg = true; // Falls sich der Cursor bereits über einem Dragobjekt befindet (d.h. es existiert ein Over-Objekt) if(objThis.m_objOver != null) objThis.setCursor(objThis.m_objOver); } } this.releaseStrg = function(objEvt){ objEvt = (window.event)? window.event : objEvt; var intKeyCode = (objEvt.keyCode)? objEvt.keyCode : objEvt.which; if(intKeyCode == 17){ objThis.blnStrg = false; // Falls sich der Cursor bereits über einem Dragobjekt befindet if(objThis.m_objOver != null) objThis.m_objOver.style.cursor = "default"; } } this.getElementsByClassName = function(strClassName){ var arrHelp = new Array(); // Suchpattern var strPattern = eval("/"+strClassName+"/"); // Alle Elemente über Wildcard ermitteln var arrTags = (navigator.userAgent.toLowerCase().indexOf("msie") != -1) ? document.all : document.getElementsByTagName('*'); // Alle Elemente durchlaufen for(var varEntry in arrTags){ // Falls eine Klasse existiert UND dem Suchkriterium entspricht if((arrTags[varEntry].className) && (arrTags[varEntry].className.match(strPattern))){ // In Klassenarray schreiben //objThis.arrDragElems[objThis.arrDragElems.length] = arrTags[varEntry]; arrHelp[arrHelp.length] = arrTags[varEntry]; } } return arrHelp; } // Drag-Elemente initialisieren (d.h. die notwendigen Event-Handler zufügen) this.init = function(){ // Array der Drag-Elemente anhand einer eindeutigen Klasse ermitteln objThis.arrDragElems = objThis.getElementsByClassName(objThis.strDragClassName); // Alle Drag-Elemente durchlaufen und die erforderlichen Eventhandler zuweisen for(var i=0; i<objThis.arrDragElems.length; i++){ //objThis.arrDragElems[i].onmousedown = function(event){ objThis.startDrag(event);}; objThis.arrDragElems[i].onmousedown = objThis.startDrag; objThis.arrDragElems[i].onmouseup = objThis.stopDrag; objThis.arrDragElems[i].onmouseover = function(){objThis.setCursor(this);}; objThis.arrDragElems[i].onmouseout = function(){objThis.clearCursor(this);}; } } this.init(); // ++++++ TESTFUNKTIONEN ++++++ this.testFunc = function(){ if(this.blnStrg) alert("Mit Steuerung"); else alert("Ohne Steuerung"); } } window.onload = function(){ objDrag = new Drag("dragBereich"); // Neues Drag-/Resizeobjekt mit der ID des Bereichs erstellen document.onmousemove = objDrag.mousePos; document.onmouseup = objDrag.stopDrag; document.onkeydown = objDrag.checkStrg; document.onkeyup = objDrag.releaseStrg; // Falls Cookies erlaubt sind if(Cookie.checkCookie() != false){ // Array mit den IDs für die DragElemente durchlaufen for(var i=0; i<arrDragIDs.length; i++){ // Cookie zu ID auslesen var strCookie = Cookie.getCookie(arrDragIDs[i]); // Falls ein Cookie zur ID existiert -> Element positionieren if(strCookie != null){ var arrHelp = strCookie.split("###"); if(document.getElementById(arrDragIDs[i])){ document.getElementById(arrDragIDs[i]).style.top = arrHelp[0] + "px"; document.getElementById(arrDragIDs[i]).style.left = arrHelp[1] + "px"; document.getElementById(arrDragIDs[i]).style.width = arrHelp[2] + "px"; document.getElementById(arrDragIDs[i]).style.height = arrHelp[3] + "px"; } } } } } var Cookie = { /* *********************** Funktion zum Setzen eines Cookies *************************** * * Parameter: * * strName - Bezeichnung für die Cookievariable * * varWert - Wert, welcher der Cookievariablen zugewiesen werden soll * * longExpires - Gültigkeitsdauer des Cookies in Millisekunden * * strDomain - optional, zugehörige Domain * * strPath - optional, zugehöriger Pfad * * boolSecure - optional, Sicherheitsrichtlinien für den Cookie aktivieren (true/false) * * ************************************************************************************* */ setCookie: function(strName, varWert, longExpires, strDomain, strPath, boolSecure){ // Datumsobjekt mit aktuellen Werten anlegen var dateExpires = new Date(); // Zeitpunkt der Ungültigkeit des Cookies berechnen dateExpires = new Date(dateExpires.getTime() + longExpires); // In gültiges Datum umwandeln dateExpires.setTime(dateExpires); // Datum in GMT-String umwandeln dateExpires = dateExpires.toGMTString(); // Cookie-Variable anlegen var strCookie = strName + "=" + unescape(varWert); strCookie += (strDomain) ? "; domain=" + strDomain : ""; strCookie += (longExpires) ? "; expires=" + dateExpires : ""; strCookie += (strPath) ? "; path=" + strPath : ""; strCookie += (boolSecure) ? "; secure" : ""; document.cookie = strCookie; }, /* ******************* Löschen eines Cookies ******************** * * Parameter: * * strName - Name der Cookievariablen, die gelöscht werden soll * * strDomain - optional; zugehörige Domain * * strPfad - optional; zugehöriger Pfad * * ************************************************************** */ eraseCookie: function(strName, strDomain, strPath){ // Datumsobjekt instanziieren, das in der Vergangenheit liegt (01.01.1970, 00:00:01 Uhr) var dateExpires = new Date(1970, 0, 1, 0, 0, 1); // Datum in GMT-String umwandeln dateExpires = dateExpires.toGMTString(); // Cookie ein Datum in der Vergangenheit zuweisen var strCookie = strName + "=; expires="+dateExpires; strCookie += (strDomain) ? "; domain=" + strDomain : ""; strCookie += (strPath) ? "; path=" + strPath : ""; document.cookie = strCookie; }, /* ********************* Cookie auslesen *********************************** * * Der Wert zur Variablen strName wird zurückgegeben * * Parameter: strName - Name der Variablen, deren Wert ermittelt werden soll * * ************************************************************************* */ getCookie: function(strName){ var i = 0 //Suchposition im Cookie var strSuche = strName + "="; // Solange das Ende des CookieStrings noch nicht erreicht wurde while(i < document.cookie.length){ // Falls der Name des Cookies gefunden wurde if (document.cookie.substring(i, i+strSuche.length) == strSuche){ // Suche nach dem ersten Semikolon ab dem Auftreten des Cookie-Namens var intEnde = document.cookie.indexOf(";", i+strSuche.length); // Stringlänge des Cookie-Wertes ermitteln intEnde = (intEnde > -1) ? intEnde : document.cookie.length; // Cookie-Wert auslesen var strCookie = document.cookie.substring(i+strSuche.length, intEnde); // Zeichen aus der URL-Schreibweise wieder zurückwandeln und zurückgeben return unescape(strCookie); } // Position im Cookie-String inkrementieren i++; } return null; }, /* ********************* Cookie auslesen *********************************** * * Die Funktion verwendet zum Ermitteln der Cookievarialben reluläre Aus- * * drücke. * * * * Der Wert zur Variablen strName wird zurückgegeben * * Parameter: strName - Name der Variablen, deren Wert ermittelt werden soll * * ************************************************************************* */ getCookie_: function(strName){ var strCookie var strValue = false; // Falls Cookies unterstützt werden if(strCookie = document.cookie){ // Falls ein Cookie gefunden wird // Im RegExp wird jedes Zeichen übernommen, das KEIN Semikolon ist // RegExp wird mit zwei Parametern aufgerufen - der zweite bedeutet GLOBALE Suche // (mgl. wäre z.B. auch 'ig', global und ohne Beachtung von Gross-/Kleinschreibung) if(strCookie.match( new RegExp(strName + '=([^;]*)', 'g'))){ strValue = RegExp.$1; return unescape(strValue); } } return null; }, /* ************* Testen, ob Browser Cookies zulässt *********************** * * Rückgabe: true, falls Unterstützung von Cookies, false sonst * * ************************************************************************ */ checkCookie: function(){ // Versuch, einen Cookie zu setzen this.setCookie("CookieTest", "OK"); // Falls der Cookie nicht gesetzt werden konnte if (!this.getCookie("CookieTest")) return false; else{ this.eraseCookie("CookieTest"); // Cookie wieder löschen return true; } }, // Falls Cookies nicht erlaubt sind // if(checkCookie() == false) alert("Keine Cookies unterstützt"); isCookie: function(){ if(document.cookie) document.getElementById("cookieID").firstChild.data = document.cookie; } } //--> </script> </head> <body> <div id="outID1"> </div> <div id="outID2"> </div> <div id="dragBereich"> <img class="class1 drag-el" id="id_0" src="http://www.4-wände.de/hpfixseparat_blumenkerze_2.gif"/></div> </div> </body> </html>[/html] [/QUOTE]
Bilder bitte
hier hochladen
und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Zitate einfügen…
Authentifizierung
Wenn ▲ = 5, ▼ = 2 und ■ = 7, was ist ▲ × ▼ + ■?
Antworten
Start
Forum
Sonstiges
Webdesign, Webentwicklung & Programmierung
PHP, Javascript, jQuery, Ajax, nodeJS, MySQL...
HTML5 Drag + Drop
Oben