Temat: Dziwne zachowanie js w ie?
Niestety nic z tego - znaczy (nie)działa tak jak poprzednio - z alertem linjkę wcześniej jest oki, ale bez niestety nie.
Poniżej kod - nieco długi i niezmiernie chaotyczny, ale js nie jest moim konikiem i raczej toczę boje, żeby kod działał poprawnie.
Raz jeszcze dzięki za poświęcony czas.
pzdr
dom
//The code below used for obtaining mouse coordinates has been compiled from some freely available web resources
//1:
http://www.webdeveloper.com/forum/showthread.php?t=92007 and should be credited to SCNightsky
//2:
http://javascript.about.com/library/blmousepos.htm
//3:
http://javascript.internet.com/page-details/mouse-coor... (
http://www.codelifter.com /
http://javascript.internet.com
//4. Corner Coords by Fred Basset:
http://bytes.com/forum/thread90547.html
//The rest of the code has been written by cartomatic@o2.pl. Feel free to redistribute it if you wish to do so.
//Gets the corner X coord
function getCornerX (elementId) {
var obj = document.getElementById(elementId);
var totalOffset = 0;
while (obj != null) {
totalOffset += obj.offsetLeft;
obj = obj.offsetParent;
}
return totalOffset;
}
//Gets the corner Y coord
function getCornerY (elementId) {
var obj = document.getElementById(elementId);
var totalOffset = 0;
while (obj != null) {
totalOffset += obj.offsetTop;
obj = obj.offsetParent;
}
return totalOffset;
}
//Some variables
var boxX;
var boxY;
var boxWidth;
var boxHeight;
var overviewWidth;
var overviewHeight;
var panStartX;
var panStartY;
var panEndX;
var panEndY;
var minTop;
var minLeft;
var maxTop;
var maxLeft;
var panStarted;
var overviewMap;
var pannedObject;
//overview pan function
function overviewPan(e){
overviewMap = document.getElementById('OverviewMap');
pannedObject = document.getElementById('OverviewBox');
// capture the mouse position
var posX = 0;
var posY = 0;
if (!e) var e = window.event;
if (e.pageX || e.pageY)
{
posX = e.pageX;
posY = e.pageY;
}
else if (e.clientX || e.clientY)
{
posX = e.clientX + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft);
posY = e.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop);
}
if (posX < 0){posX = 0;}
if (posY < 0){posY = 0;}
//end capture mouse position
//do some stuff depending on a passed event
switch (e.type)
{
case 'mousedown': //start selectionBand
//Clear hidden fields
document.getElementById('OverviewCentreX').value = null;
document.getElementById('OverviewCentreY').value = null;
//get box size
boxWidth = parseInt(pannedObject.style.width);
boxHeight = parseInt(pannedObject.style.height);
//get box top left corner
boxX = pannedObject.offsetLeft;
boxY = pannedObject.offsetTop;
//get overview size
overviewWidth = parseInt(overviewMap.style.width);
overviewHeight = parseInt(overviewMap.style.height)
//min top & left coords of the box top left corner
//minTop = overviewMap.offsetTop+16; //16 accounts for the top bar height
//minLeft = overviewMap.offsetLeft;
minTop = boxY - parseInt((overviewHeight - boxHeight)/2);
minLeft = boxX - parseInt((overviewWidth - boxWidth)/2);
//max top & left coords of the box top left corner
//maxTop = overviewMap.offsetTop + overviewHeight + 16 - boxHeight; //16 accounts for the top bar height
//maxLeft = overviewMap.offsetLeft + overviewWidth - boxWidth;
maxTop = boxY + parseInt((overviewHeight - boxHeight)/2);
maxLeft = boxX + parseInt((overviewWidth - boxWidth)/2);
//start panning
panStarted = true;
//record start mouse coords
panStartX = posX;
panStartY = posY;
break
case 'mousemove':
//if pan started then pan the box
if (panStarted) {
//ensure the box doesn't move outside the pane
if (boxX - (panStartX - posX) < minLeft) {
pannedObject.style.left = minLeft + 'px';
}
else if (boxX - (panStartX - posX) > maxLeft) {
pannedObject.style.left = maxLeft + 'px';
}
else {
pannedObject.style.left = boxX - (panStartX - posX) + 'px';
}
if (boxY - (panStartY - posY) < minTop) {
pannedObject.style.top = minTop + 'px';
}
else if (boxY - (panStartY - posY) > maxTop) {
pannedObject.style.top = maxTop + 'px';
}
else {
pannedObject.style.top = boxY - (panStartY - posY) +'px';
}
}
//Update hidden fields
document.getElementById('OverviewCentreX').value = parseInt(pannedObject.style.left) - boxX;
document.getElementById('OverviewCentreY').value = boxY - parseInt(pannedObject.style.top);
//y values are inverted so it generates proper cartesian offsets
break
case 'mouseup':
//release pan
panStarted = false;
//because of some reason ie doesn't do the click below if the alert box is commented out...
//alert('test');
//click hidden button
//document.getElementById('OverviewClick').click();
var test = $('OverviewClick');
test.click();
//restore the box position - not needed now since the boz is reset in the code behind
//pannedObject.style.left = boxX + 'px';
//pannedObject.style.top = boxY + 'px';
break
case 'mouseout':
//release pan
panStarted = false;
//document.getElementById('OverviewMap').click();
//restore the box position
pannedObject.style.left = boxX + 'px';
pannedObject.style.top = boxY + 'px';
//end do nothing
break
default:
alert("OverviewPan Failed");
break
}
}
Dominik Mikiewicz edytował(a) ten post dnia 06.08.08 o godzinie 12:52