Pages

Monday, January 9, 2012

Draw and Drag in JavaScript

    <HTML>
    <HEAD>
    <META http-equiv=imagetoolbar content=no>
    <TITLE>
    
    </TITLE>
    <STYLE>
    #rubberBand {
    position: absolute;
    visibility: hidden;
    width: 0px; height: 0px;
    border: 2px solid red;
    }
    </STYLE>
<script language="JavaScript1.2">
<!--

var ie=document.all;
var nn6=document.getElementById&&!document.all;

var isdrag=false;
var x,y;
var dobj;

function movemouse(e)
{
  if (isdrag)
  {
    dobj.style.left = nn6 ? tx + e.clientX - x : tx + event.clientX - x;
    dobj.style.top  = nn6 ? ty + e.clientY - y : ty + event.clientY - y;
    return false;
  }
}

function selectmouse(e)
{
  var fobj       = nn6 ? e.target : event.srcElement;
  var topelement = nn6 ? "HTML" : "BODY";

  while (fobj.tagName != topelement && fobj.className != "dragme")
  {
    fobj = nn6 ? fobj.parentNode : fobj.parentElement;
  }

  if (fobj.className=="dragme")
  {
    isdrag = true;
    dobj = fobj;
    tx = parseInt(dobj.style.left+0);
    ty = parseInt(dobj.style.top+0);
    x = nn6 ? e.clientX : event.clientX;
    y = nn6 ? e.clientY : event.clientY;
    document.onmousemove=movemouse;
    return false;
  }
}

document.onmousedown=selectmouse;
document.onmouseup=new Function("isdrag=false");

//-->
</script>


    
    </HEAD>
    <BODY>
    <img name="myImage"  id="myImage" src="Winter.jpg" height=100%
    width=100%>
    
    
    <DIV ID="rubberBand" class="dragme"></DIV>
    
    <SCRIPT>
    
    var IMG;
    
    function startRubber (evt) {
    if (document.all) {
    // IE
    var r = document.all.rubberBand;
    r.style.width = 0;
    r.style.height = 0;
    r.style.pixelLeft = event.x;
    r.style.pixelTop = event.y;
    r.style.visibility = 'visible';
    IMG.ondragstart = cancelDragDrop; // otherwise IE will try to drag the image
    }
    else if (document.getElementById) {
    // firefox
    evt.preventDefault();
    var r = document.getElementById('rubberBand');
    r.style.width = 0;
    r.style.height = 0;
    r.style.left = evt.clientX + 'px';
    r.style.top = evt.clientY + 'px';
    r.style.visibility = 'visible';
    r.onmouseup = stopRubber;
    }
    IMG.onmousemove = moveRubber;
    }
    function moveRubber (evt) {
    if (document.all) { // IE
    var r = document.all.rubberBand;
    r.style.width = event.x - r.style.pixelLeft;
    r.style.height = event.y - r.style.pixelTop;
    }
    else if (document.getElementById) { // firefox
    var r = document.getElementById('rubberBand');
    r.style.width = evt.clientX - parseInt(r.style.left);
    r.style.height = evt.clientY - parseInt(r.style.top);
    }
    return false; // otherwise IE won't fire mouseup :/
    }
    function stopRubber (evt) {
    IMG.onmousemove = null;
    }
    
    function cancelDragDrop()
    {
    window.event.returnValue = false;
    }
    
    IMG = document.getElementById('myImage');
    IMG.onmousedown = startRubber;
    IMG.onmouseup = stopRubber;
    
    </SCRIPT>
    </BODY>
    </HTML>
    

No comments:

Post a Comment