help with firefox/Netscape rectangle-over-image please

A

AndrewW

Hi

I have an application that draws a selection rectangle over a map
image. I can get it to work fine in IE and Opera, but not
Firefox/Netscape.

I've thrown the following small example together to illustrate the
problem - the problem being that FF/NE initially draw my rectangle
before the icon changes immediately to the black no-entry icon. Then,
when I let go of the mouse, the rectangle continues drawing, but it
doesn't stop as the mouseup has already fired of course.

IE was doing the same, but I found the ondragstart/cancelDragDrop
solution to that. I can't find what appears to be a similar solution
for FF/NE.

Any advice very gratefully received! Hair is fading fast :)

<HTML>
<HEAD>
<META http-equiv=imagetoolbar content=no>
<TITLE>

</TITLE>
<STYLE>
#rubberBand {
position: absolute;
visibility: hidden;
width: 0px; height: 0px;
border: 2px dashed red;
}
</STYLE>

</HEAD>
<BODY>
<img name="myImage" id="myImage" src="myimage.gif" height=400
width=400>


<DIV ID="rubberBand"></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
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';
}
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>
 
A

AndrewW

AndrewW said:
Hi

I have an application that draws a selection rectangle over a map
image. I can get it to work fine in IE and Opera, but not
Firefox/Netscape.

I've thrown the following small example together to illustrate the
problem - the problem being that FF/NE initially draw my rectangle
before the icon changes immediately to the black no-entry icon. Then,
when I let go of the mouse, the rectangle continues drawing, but it
doesn't stop as the mouseup has already fired of course.

IE was doing the same, but I found the ondragstart/cancelDragDrop
solution to that. I can't find what appears to be a similar solution
for FF/NE.

Any advice very gratefully received! Hair is fading fast :)

<HTML>
<HEAD>
<META http-equiv=imagetoolbar content=no>
<TITLE>

</TITLE>
<STYLE>
#rubberBand {
position: absolute;
visibility: hidden;
width: 0px; height: 0px;
border: 2px dashed red;
}
</STYLE>

</HEAD>
<BODY>
<img name="myImage" id="myImage" src="myimage.gif" height=400
width=400>


<DIV ID="rubberBand"></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
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';
}
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>

Can anyone assist with this? It can't be impossible, but I can't work
out where it's going wrong.

Help very gratefully received, thanks in advance.

AW
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,484
Members
44,903
Latest member
orderPeak8CBDGummies

Latest Threads

Top