henry5: fehler im internet explorer?

Beitrag lesen

Hallo, mathias
vielen dank für deinen kommentar.

Ein besseres Script ist etwa dieses:
http://www.walterzorn.com/dragdrop/dragdrop_e.htm

das script von walter zorn ist ohne zweifel eine geniale bibliothek. doch für meine einfache anwendung ist es zu kompliziert und zu umfangreich. so ein riesenskript mag ich nicht gerne umbauen...

das script von brainjar funktioniert abgesehen von diesem "kardinalsfehler" auch nach 7 jahren im ie6, firefox und safari. zudem ist es damit sehr einfach, neue ziehbare divs hinzuzufügen.
so habe ich das skript angepasst, die funktion "browser" entfernt und die abfragen umgeschrieben.

und keine angst: ich verdiene mein geld nicht mit javascript...;-)

var zIndex=3

function up(what){
zIndex++;
what.style.zIndex=zIndex}

var dragObj=new Object()

function dragStart(event,id){
var el
var x,y
if(id)
 dragObj.elNode=document.getElementById(id)
else{
 if(window.event)
 dragObj.elNode=window.event.srcElement
 else
 dragObj.elNode=event.target
 if(dragObj.elNode.nodeType==3)
 dragObj.elNode=dragObj.elNode.parentNode}
if(window.event){
 x=window.event.clientX+document.documentElement.scrollLeft
 +document.body.scrollLeft
 y=window.event.clientY+document.documentElement.scrollTop
 +document.body.scrollTop}
else{
 x=event.clientX+window.scrollX
 y=event.clientY+window.scrollY}
 dragObj.cursorStartX=x
 dragObj.cursorStartY=y
 dragObj.elStartLeft=parseInt(dragObj.elNode.style.left,10)
 dragObj.elStartTop=parseInt(dragObj.elNode.style.top,10)
 if(isNaN(dragObj.elStartLeft))dragObj.elStartLeft=0
 if(isNaN(dragObj.elStartTop))dragObj.elStartTop=0
 if(document.attachEvent){
 document.attachEvent("onmousemove",dragGo)
 document.attachEvent("onmouseup",dragStop)
 window.event.cancelBubble=true
 window.event.returnValue=false}
 else{
 document.addEventListener("mousemove",dragGo,true)
 document.addEventListener("mouseup",dragStop,true)
 event.preventDefault()}}

function dragGo(event){
var x,y
if(window.event){
 x=window.event.clientX+document.documentElement.scrollLeft
 +document.body.scrollLeft
 y=window.event.clientY+document.documentElement.scrollTop
 +document.body.scrollTop}
else{
 x=event.clientX+window.scrollX
 y=event.clientY+window.scrollY}

dragObj.elNode.style.left=(dragObj.elStartLeft+x-dragObj.cursorStartX)+"px"
dragObj.elNode.style.top=(dragObj.elStartTop+y-dragObj.cursorStartY)+"px"
if(window.event){
 window.event.cancelBubble=true
 window.event.returnValue=false}
else{
event.preventDefault()}}

function dragStop(event){
if(document.detachEvent){
 document.detachEvent("onmousemove",dragGo)
 document.detachEvent("onmouseup",dragStop)}
else{
 document.removeEventListener("mousemove",dragGo,true)
 document.removeEventListener("mouseup",dragStop,true)}}